Bem pessoal, sou novo com arduino, mas estou me empenhando e montando um projetinho...
Porém me deparei com um problema que não consigo resolver...
Consegui fazer o controle digital de um led e depois consegui fazer o controle PWM de um led;
Porém quanto decidi acionar ambos no mesmo programa começou a dar pau... O analógico sempre funciona corretamente, porém o digital não funciona de forma alguma...
Já tentei colocar os 2 na void loop juntos, separado, uma void pra cada, e nada... estou tentando de várias formas faz tempo e por enquanto não consegui fazer o que quero...
A idéia é simples... se envio 'a', liga um led... se envio 'b', ele apaga.
Se eu enviar um valor de 0 a 255, eu controlo outro led analogicamente.
Estou utilizando o Serial Monitor do Arduino para programar.
Ambos os leds estão funcionando corretamente e as portas também.
vide código:
const int LED1 = 3; //Declara Led1
const int LED2 = 11; //Declara Led2
char blue = 0; //Declara Variável de entrada pra caractere
void setup() {
Serial.begin(9600); //Declara inicio de comunicação serial
pinMode(LED1, OUTPUT); //Declara pino 3 como saida
pinMode(LED2, OUTPUT); //Declara pino 11 como saída
void led();}
void led(){ //função que controla led digital
while (Serial.available()> 0) { //Lê quando tiver informação de entrada
blue = Serial.read(); //Lê o valor que vem da porta serial
if(blue == 'a' ){ //Caso a informação recebida for a...
digitalWrite(LED2, HIGH); //Setar o estado do pino 11 em 1
}
else(blue == 'b'); //Senão, caso for b;;;
digitalWrite(LED2, LOW); //Setar o estado do pino 11 em 0
Serial.print(blue); //Escrever informação que vem da porta serial no monitor
}
}void loop(){ //Ciclo
while (Serial.available() > 0){ //Quando tiver informação...
int red = Serial.parseInt(); //Definir variavel red como um valor recebido
if (Serial.read() == '\n') { //Caso for.. "na próxima linha"
constrain(red, 0, 255); //De Zero à 255
analogWrite(LED1, red); //Escrever o valor no pino 3
Serial.print(red, HEX); //Escrever o valor recebido na tela
}}}
Tags:
atualmente mudei e está mais ou menos assim:
const int LED1 = 3; //Declara Led1
const int LED2 = 11; //Declara Led2
char blue = 0; //Declara Variável de entrada pra caractere
void setup() {
Serial.begin(9600); //Declara inicio de comunicação serial
pinMode(LED1, OUTPUT); //Declara pino 3 como saida
pinMode(LED2, OUTPUT); //Declara pino 11 como saída
}
void loop(){ //Ciclo
if (Serial.available() > 0){ //Quando tiver informação...
blue = Serial.read(); //Lê o valor que vem da porta serial
int red = Serial.parseInt(); //Definir variavel red como um valor recebido
constrain(red, 0, 255);
if(blue == 'a' ){ //Caso a informação recebida for a...
digitalWrite(LED2, HIGH); //Setar o estado do pino 11 em 1
}
else if(blue == 'b'){ //Senão, caso for b;;;
digitalWrite(LED2, LOW); //Setar o estado do pino 11 em 0
Serial.print(blue); //Escrever informação que vem da porta serial no monitor
}
else{
analogWrite(LED1, red); //Escrever o valor no pino 3
Serial.print(red, HEX); //Escrever o valor recebido na tela
}
delay(500);
}}
porém o led analogico apenas blinka e só reconhece um numero quando envio ele em 4 caracteres (exemplo 0255 pra mandar 255)
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por