Galera, estou com problema em um programa que estou desenvolvendo, sou muito iniciante e meu trabalho sofre certa urgência, logo não tenho tempo de me aprofundar em linguagem C++.

Alguns companheiros tentaram me ajudar, mas como disse tenho dificuldade, e os códigos que me sugeriram me deixaram ainda mais perdido.

Vamos ao programa.

Tenho que acender os leds pelo Monitor Serial do Arduíno, porém com valores também fracionários, ex: 220; 220,5; 150,55 etc.

Sei que é questão de conversão de int para float mas não sei onde mudar, se alguém puder muito bondosamente me ajudar, serei muito grato.

Deus abençoe a todos.

Listagem 3.6 – Código para o projeto 10

// Projeto 10 – Mood lamp com controle serial

char buffer[18];

int red, green, blue;

int RedPin = 11;

int GreenPin = 10;

int BluePin = 9;

void setup() {

Serial.begin(9600);

Serial.flush();

pinMode(RedPin, OUTPUT);

pinMode(GreenPin, OUTPUT);

pinMode(BluePin, OUTPUT);

}

void loop() {

if (Serial.available() > 0) {

int index=0;

delay(100); // deixe o buffer encher

int numChar = Serial.available();

if (numChar>15) {

numChar=15;

}

while (numChar--) {

buffer[index++] = Serial.read();

}

splitString(buffer);

}

}

void splitString(char* data) {

Serial.print("Data entered: ");

Serial.println(data);

char* parameter;

parameter = strtok (data, " ,");

while (parameter != NULL) {

setLED(parameter);

parameter = strtok (NULL, " ,");

}

// Limpa o texto e os buffers seriais

for (int x=0; x<16; x++) {

buffer[x]='\0';

}

Serial.flush();

}

void setLED(char* data) {

if ((data[0] == 'r') || (data[0] == 'R')) {

int Ans = strtol(data+1, NULL, 10);

Ans = constrain(Ans,0,255);

analogWrite(RedPin, Ans);

Serial.print("Red is set to: ");

Serial.println(Ans);

}

if ((data[0] == 'g') || (data[0] == 'G')) {

int Ans = strtol(data+1, NULL, 10);

Ans = constrain(Ans,0,255);

analogWrite(GreenPin, Ans);

Serial.print("Green is set to: ");

Serial.println(Ans);

}

if ((data[0] == 'b') || (data[0] == 'B')) {

int Ans = strtol(data+1, NULL, 10);

Ans = constrain(Ans,0,255);

analogWrite(BluePin, Ans);

Serial.print("Blue is set to: ");

Serial.println(Ans);

}

}

Exibições: 173

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço