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.
Tags:
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.
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.
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por