Olá pessoal!

Gostaria de variar a intensidade de um led, do minimo ao máximo, com os valores recebido pela serial, entre 0 minimo e 1023 máximo.

Se alguém poder me ajudar, ficarei agradecido.

Exibições: 367

Responder esta

Respostas a este tópico

Fiz um modelo para você, testei aqui e funcionou:

/** Referencias:
*
* http://blog.prsolucoes.com/c/funcao-map-do-arduino-regra-de-tres/
* https://www.arduino.cc/en/Reference/StringToInt
*
*/

String comando_serial; // String para receber o que chega na serial
#define led 3 // pino pwm digital 3 para realizar a variação de luminosidade

int valor_led = 0; // valor que sera atribuido para a luminosidade do led

void setup() {
  Serial.begin(9600); // inicia a comunicação serial com vel. 9600    
  pinMode(led, OUTPUT); // define o pino do led como saída
}

void loop() {

  if (Serial.available() > 0) { // se ouver dados na serial

    comando_serial = String(""); // limpa a String

    while(Serial.available()) // enquanto houver dados na serial,
                              // isso pq ele ler dado por dado
    {
      // monta a String com a quantidade de caracteres que chegou
      // de 0 a 1023
      comando_serial = comando_serial + char(Serial.read());
      delay(1);
    }

    // transforma a String em Int e armazena na variável do valor
    valor_led = comando_serial.toInt();
    
    // mapea os valores que serão de 0 a 1023 para 0 a 255 que é o valor dos pinos do arduino
    valor_led = map(valor_led, 0, 1023, 0, 255);
    
    // mostra os dados na serial
    Serial.print("Recebido: ");
    Serial.println(valor_led);
    
    //aplica o valor no pino do led
    analogWrite(led, valor_led);
  }
}

Olá Eduardo Silva!

Cara! O seu código ficou top. Testei e deu certo. Mas falta alguma coisa pro meu esquema ficar 100%.

Vou explicar!

Estou usando dois arduino uno interligados pela serial. TX de um ligado ao RX do outro.

No primeiro, estou usando um potenciômetro e um led, fazendo o led variar a intensidade abrindo e fechando o potenciômetro.

No segundo, coloquei o seu código com um led no pino 3 conforme seu código.

Minha intenção é variar a intensidade do led no segundo arduino.

Dê uma olhada no código do primeiro arduino. Se você poder me ajudar ficarei muito agradecido.

const int analogInPin = A4; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 12; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
Serial.begin(9600);
}

void loop() {

// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);


Serial.println(sensorValue);
// wait 2 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(2);
}

Bom dia, embora o Eduardo já resolveu acima, segue link do meu canal no YT publicado a algum tempo, onde simulo isso, na descrição esta o link para o código no pastebin caso precise, já que aqui as vezes o código perde formatação.

https://www.youtube.com/watch?v=V4YkgzTxMc8

Abs.

Valeu Carlos!

Legal o seu vídeo! Se você puder disponibilizar aquele código que aparece na tela, ficarei agradecido. 

Olá Tito,

Como lhe expliquei, na descrição dos meus vídeos, sempre coloco o link do código, mas em todo caso segue aqui.

http://pastebin.com/3SpijBJ6

Trate de seguir as orientações do Rui Viana, evitara dor de cabeça para si e para os demais, os códigos colados aqui sofrem deformações na escrita. Segue anexo também em .txt.

Abs.

Anexos

Valeu Carlos!

Eu não tinha prestado atenção na descrição do vídeo. Obrigado pela paciência.

Valeu por compartilhar seus conhecimentos.

De nada Tito,

Todos os colegas aqui fazem o mesmo, compartilham conhecimento sem outro motivo que o de colaborar com o próximo, coisa que você também estará fazendo em breve com certeza.

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço