Ovládání výstupů - sériová linka
Re: Ovládání výstupů - sériová linka
V té sekvenci "1.1.1.1.1.1.1.1.1." je i nějaká ukončovací značka, nebo se tohle jen sype v pravidelných intervalech každých 100ms?
Možná bude problém se synchronizací příjmu a vysílání.
V programu se mi hned na první pohled nelíbí ta pauza delay(100).
Jestli vysílač posílá data taky každých 100ms tak je přijímací program o něco pomalejší (o to vyhodnocování) a bude se mu zahlcovat přijímací buffer.
Možná bude problém se synchronizací příjmu a vysílání.
V programu se mi hned na první pohled nelíbí ta pauza delay(100).
Jestli vysílač posílá data taky každých 100ms tak je přijímací program o něco pomalejší (o to vyhodnocování) a bude se mu zahlcovat přijímací buffer.
Re: Ovládání výstupů - sériová linka
... Tak oprava.
Nevšimnul jsem si, že delay(100) se vykoná až když je celý buffer vyprázdněný.
Takže v tom chyba nebude.
Nevšimnul jsem si, že delay(100) se vykoná až když je celý buffer vyprázdněný.
Takže v tom chyba nebude.
Re: Ovládání výstupů - sériová linka
okončovaní tam není žádné , a ta pauza tam zustala po nějaké verzi pokusu , i když tam neni, tak to nefungluje. Jěště me dneska napadlo jestli nahodou ta tečka která není int jestli nahodou to nevezme jak 1,1 char 1,1 char... a proto se to nenaplní a neblbne to. V noci zkusim místo tecek tam dát projistotu písmena jako oddělovač. Ale jinak by to mělo být funkční ne?? A nebo nesetkal se něko stím že by byl špatnej bluetooth modul špatnej a posílá blbosti???
Re: Ovládání výstupů - sériová linka
Zkusil jsem napsat program pro Arduino. Pracuje s řetězcem, který popisuješ.
Mám tu jen Arduino Nano, takže jsem to osekal jen na 4 LED.
Pro testování tam pomocí Visual Basicu odesílám po sériové komunikaci ty řetězce a zaškrávacími políčky měním hodnotu na 4 pozicích.
Video je tady:
https://youtu.be/zu1gJim5QoY
A program pro Arduino tady:
Mám tu jen Arduino Nano, takže jsem to osekal jen na 4 LED.
Pro testování tam pomocí Visual Basicu odesílám po sériové komunikaci ty řetězce a zaškrávacími políčky měním hodnotu na 4 pozicích.
Video je tady:
https://youtu.be/zu1gJim5QoY
A program pro Arduino tady:
Kód: Vybrat vše
char prijato[20]; // pole, do ktereho se bude ukladat prijaty retezec
byte ukazatel; // ukazatel do toho pole
void setup()
{
Serial.begin(9600);
// mam jen Arduino NANO, tak jsem to osekal na 4 piny.
pinMode(5, OUTPUT); //nahoru
pinMode(6, OUTPUT); //dolu
pinMode(7, OUTPUT); //magnet
pinMode(8, OUTPUT); //svetla
}
void loop(void)
{
byte cekani = 0;
while (Serial.available() == false) // mereni doby, po kterou neprobiha komunikace
{
if (cekani == 255) cekani = 254; // pri hodne dlouhe pauze nedovolit preteceni do 0
cekani ++;
delay(1);
}
if (cekani > 50) // kdyz byla v komunikaci dostatecne dlouha pauza, znamena to, ze zacaly prichazet prvni data
{
delay(20); // tahle pauza by mela stacit na to, aby se pres komunikaci prijalo vsech 18 znaku
ukazatel = 0;
while (Serial.available()) // vsech 18 znaku z bufferu by se melo ulozit do pole
{
prijato[ukazatel] = Serial.read();
ukazatel ++;
}
// ----------------------------------------------------------
// a tady se jednotlive polozky z toho pole vyhodnoti (liché indexy jsou ty tecky)
// mam jen Arduino NANO, tak jsem to osekal na 4 piny.
if (prijato[0] == '1') digitalWrite (5, HIGH); else digitalWrite (5, LOW);
if (prijato[2] == '1') digitalWrite (6, HIGH); else digitalWrite (6, LOW);
if (prijato[4] == '1') digitalWrite (7, HIGH); else digitalWrite (7, LOW);
if (prijato[6] == '1') digitalWrite (8, HIGH); else digitalWrite (8, LOW);
// ----------------------------------------------------------
}
else // pauza pred komunikaci byla moc kratka, takze se prijimac trefil nekam doprostred prenosu
{
delay(20);
while (Serial.available()) // cely buffer se vysype
{
char ignorovat = Serial.read();
}
}
}
Re: Ovládání výstupů - sériová linka
Super to vypadá velmi zajímavě tohle řešení. jdu to odzkoušet jestli to bude reagovat na tu aplikaci co mam v mobilu. Prozatím moc děkuji
Re: Ovládání výstupů - sériová linka
Čau mooc děkuji - komunikace je funkční , ted mame nějaké problemy s aplikací která řídí jen půlku toho co má ale alespon to spolu už komunikuje. Až to bude celé tak sem dam odkaz na video.
Re: Ovládání výstupů - sériová linka
Nepitval jsem uváděné kódy, jen drobná poznámka z praxe (původní dotaz tohoto téma). Vysílací a přijímací část jsem odlaďoval samostatně, Když mi vysílací část dávala na ser. monitor to, co jsem očekával, ladil jsem přijímací část také samostatně, přes ser. monitor jsem ji krmil tím, co mi dává odladěná vysílací část. Dost mi to pomohlo.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti