Sériový monitor
Sériový monitor
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.
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 203 x
Re: Sériový monitor
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.
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
Když zadám barvu, nic se nestane pouze, se vypíše do monitoru.
Re: Sériový monitor
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í.
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
... 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:
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:
Re: Sériový monitor
Máte pravdu, už to funguje, díky za radu
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 21 hostů