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

}}}

Exibições: 396

Responder esta

Respostas a este tópico

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)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço