Stránka 1 z 1

Sériový monitor

Napsal: 18 srp 2019, 11:22
od Bartjan
Zdravím,
S arduinem teprve začínám, takže omluvte, pokud je můj problém moc primitivní. Snažil jsem se udělat projekt, kde bych pomocí sériového
monitoru ovládal 3 LEDky. Zadáním barvy do sériového monitoru (red, green, blue) by se měla daná LED rozsvítit ale nestalo se tak. V zapojení by problém být neměl, takže pokud najdete někdo chybu v programu nebo někde jinde, budu moc rád.

Re: Sériový monitor

Napsal: 18 srp 2019, 12:12
od AstroMiK
A co to dělá, když to nefunguje?

Já jsem to vyzkoušel a běží to.
Reaguje to na příkazy "red", "blue", "green" (malými písmeny bez uvozovek). Při čemkoliv jiném zhasne všechny LED.

Re: Sériový monitor

Napsal: 18 srp 2019, 12:28
od Bartjan
Když zadám barvu, nic se nestane pouze, se vypíše do monitoru.

Re: Sériový monitor

Napsal: 18 srp 2019, 12:49
od AstroMiK
Tak to musí být špatně v zapojení.
Otočené LED (anoda na GND)?

Doplň si do programu ještě pár SerialPrintů, abys věděl, kde se program právě nachází.
Když ti pak bude program správně hlásit zprávy jako "Má svítit červená", ale ve skutečnosti ta červená svítit nebude, tak musíš mít něco špatně v zapojení.

Kód: Vybrat vše

const int bluePin = 2; 
const int greenPin = 3; 
const int redPin = 4; 
String comdata = "";
int lastLength = 0;
void setup() {
pinMode(bluePin,OUTPUT); 
pinMode(greenPin, OUTPUT); 
pinMode(redPin, OUTPUT); 
Serial.begin(9600); 
Serial.print("Please input any color of LED: "); 
}
void loop() {
if(Serial.available()>0) {
comdata = "";
while (Serial.available() > 0) {
comdata += char(Serial.read());
delay(2);
}
Serial.println(comdata);
}
if(comdata == "blue") {
Serial.println("Ma svitit modra");
digitalWrite(bluePin, HIGH); 
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW); 
} else if(comdata == "red") {
Serial.println("Ma svitit cervena");
digitalWrite(bluePin, LOW); 
digitalWrite(greenPin, LOW); 
digitalWrite(redPin, HIGH); 
} else if(comdata == "green") {
Serial.println("Ma svitit zelena");
digitalWrite(bluePin, LOW); 
digitalWrite(greenPin, HIGH); 
digitalWrite(redPin, LOW); 
} else {
Serial.println("Vsechny LED maji zhasnout");
digitalWrite(bluePin, LOW); 
digitalWrite(greenPin, LOW); 
digitalWrite(redPin, LOW); 
}
}

Re: Sériový monitor

Napsal: 18 srp 2019, 12:57
od AstroMiK
... asi už to vidím.

Aby to fungovalo, musíš mít v sériovém monitoru nastaveno "Chybný konec řádky".
Jinak to k tomu řetězci, který zadáváš, přidává ještě navíc <CR> a <LF> kódy.

V příloze je obrázek:
serial.gif

Re: Sériový monitor

Napsal: 18 srp 2019, 13:09
od Bartjan
Máte pravdu, už to funguje, díky za radu