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í
dBez shrnutí editace
dBez shrnutí editace
Riadok 35: Riadok 35:


<syntaxhighlight lang="logo">
<syntaxhighlight lang="logo">
to otestujArduino
to otestujArduino :port
   let "arduino new "CommPort [port COM3]
   new "CommPort se [name arduino port] :port
   arduino'setConnected "true
   arduino'setConnected "true
   if [not arduino'connected] [show [Neda sa pripojit na Arduino] stop]
   if not arduino'connected [show [Neda sa pripojit na Arduino] stop]
   arduino'onReceive [show se [Arduino:] arduino'receive]
   arduino'setEvent "onReceive [show se [Arduino:] arduino'receive]
  wait 1000
   arduino'send "1
   arduino'send "1
   delay 1000
   wait 1000
   arduino'send "2
   arduino'send "2
   delay 1000
   wait 1000
   arduino'send "3
   arduino'send "3
  wait 1000
   arduino'setConnected "false
   arduino'setConnected "false
  eraseObject "arduino
end
end
</syntaxhighlight>
</syntaxhighlight>
a potom z príkazového riadku Imagine môžeme zadať napríklad:
? otestujArduino "COM4

Verzia z 23:03, 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 :port
  new "CommPort se [name arduino port] :port
  arduino'setConnected "true
  if not arduino'connected [show [Neda sa pripojit na Arduino] stop]
  arduino'setEvent "onReceive [show se [Arduino:] arduino'receive]
  wait 1000
  arduino'send "1
  wait 1000
  arduino'send "2
  wait 1000
  arduino'send "3
  wait 1000
  arduino'setConnected "false
  eraseObject "arduino
end

a potom z príkazového riadku Imagine môžeme zadať napríklad:

? otestujArduino "COM4