Komunikácia medzi Imagine Logo a Arduinom: Rozdiel medzi revíziami

Zo stránky Robotický krúžok
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „Imagine Logo je silný nástroj a dokáže robiť všetko možné... napríklad aj otvárať a komunikovať cez sériový port - a tam sa práve pripája Arduino. Podro...“)
 
dBez shrnutí editace
Riadok 20: Riadok 20:
     if (c == '1')
     if (c == '1')
       Serial.println("Ahoj Imagine!");
       Serial.println("Ahoj Imagine!");
     else  
     else if ((c >= '0') && (c <= '9'))
       Serial.println((c - '0') * 3 + '0');
       Serial.println((c - '0') * 3);
   }
   }
   delay(10);
   delay(10);

Verzia z 22:39, 11. november 2019

Imagine Logo je silný nástroj a dokáže robiť všetko možné... napríklad aj otvárať a komunikovať cez sériový port - a tam sa práve pripája Arduino.

Podrobné informácie o práci so sériovým portom sú na stránkach o Imagine Logu.

Tu si vyskúšame jednoduchý príklad. Napíšeme program pre Arduino, ktorý čaká na nejaké jednociferné číslo na sériovom porte, ak je to 1, tak pošle naspäť jeden riadok, v ktorom je pozdrav, inak číslo vynásobí tromi a výsledok pošle naspäť do PC:

void setup() 
{  
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() 
{
  if (Serial.available())
  {
    char c = Serial.read();
    if (c == '1')
      Serial.println("Ahoj Imagine!");
    else if ((c >= '0') && (c <= '9'))
      Serial.println((c - '0') * 3);
  }
  delay(10);
  digitalWrite(13, 1 - digitalRead(13));
}

Po nahratí programu do Arduina si túto funkcionalitu môžeme vyskúšať cez terminálové okno Putty:

Putty arduino test.png

A napokon napíšeme program pre Imagine Logo, ktorý otvorí sériový port a komunikuje s Arduinom (použijeme anglickú verziu Imagine):

to otestujArduino
  let "arduino new "CommPort [port COM3]
  arduino'setConnected "true
  if [not arduino'connected] [show [Neda sa pripojit na Arduino] stop]
  arduino'onReceive [show se [Arduino:] arduino'receive]
  arduino'send "1
  delay 1000
  arduino'send "2
  delay 1000
  arduino'send "3
  arduino'setConnected "false
end