Sériový monitor

Odpovědět
Bartjan
Příspěvky: 5
Registrován: 18 srp 2019, 11:08
Reputation: 0

Sériový monitor

Příspěvek od Bartjan » 18 srp 2019, 11:22

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.
Přílohy
Seriovy_monitor.ino
(928 bajtů) Staženo 198 x

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Sériový monitor

Příspěvek od AstroMiK » 18 srp 2019, 12:12

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.

Bartjan
Příspěvky: 5
Registrován: 18 srp 2019, 11:08
Reputation: 0

Re: Sériový monitor

Příspěvek od Bartjan » 18 srp 2019, 12:28

Když zadám barvu, nic se nestane pouze, se vypíše do monitoru.

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Sériový monitor

Příspěvek od AstroMiK » 18 srp 2019, 12:49

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); 
}
}

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Sériový monitor

Příspěvek od AstroMiK » 18 srp 2019, 12:57

... 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

Bartjan
Příspěvky: 5
Registrován: 18 srp 2019, 11:08
Reputation: 0

Re: Sériový monitor

Příspěvek od Bartjan » 18 srp 2019, 13:09

Máte pravdu, už to funguje, díky za radu

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů