/* Command interpreter for PIL-IO interfacing created 22 Oct 2014 by J-F Garnier This example code is in the public domain. */ void resetall() { int i; // all digital as input for (i=2;i<=12;i++) pinMode(i,INPUT_PULLUP); } void get_cmd() { char c1, c2; int pin, value; // if there's any serial available, read it: if (Serial.available() > 0) { digitalWrite(LED_BUILTIN, HIGH); c1= Serial.read(); if ((c1>='A')&&(c1<='Z')) { delay(10); // 10 ms c2=Serial.read(); if (c2>0) { if ((c1=='O')&&(c2=='A')) { pin=Serial.parseInt(); value=Serial.parseInt(); if ((pin>=2)&&(pin<=12)) { pinMode(pin,OUTPUT); analogWrite(pin,value); } } else if ((c1=='I')&&(c2=='A')) { pin=Serial.parseInt(); if ((pin>=0)&&(pin<=5)) { value=analogRead(pin); Serial.println(value); } } else if ((c1=='I')&&(c2=='D')) { pin=Serial.parseInt(); if ((pin>=2)&&(pin<=12)) { pinMode(pin,INPUT_PULLUP); value=digitalRead(pin); Serial.println(value); } } else if ((c1=='S')&&(c2=='D')) { pin=Serial.parseInt(); if ((pin>=2)&&(pin<=12)) { pinMode(pin,OUTPUT); digitalWrite(pin,HIGH); } } else if ((c1=='C')&&(c2=='D')) { pin=Serial.parseInt(); if ((pin>=2)&&(pin<=12)) { pinMode(pin,OUTPUT); digitalWrite(pin,LOW); } } else if ((c1=='T')&&(c2=='N')) { pin=Serial.parseInt(); value=Serial.parseInt(); if ((pin>=2)&&(pin<=12)) { pinMode(pin,OUTPUT); tone(pin,value,1000); } } else if ((c1=='R')&&(c2=='S')) { resetall(); } else if ((c1=='V')&&(c2=='E')) { Serial.println("Ver 1.0 JFG 2014 "); } do { c1=Serial.read(); } while ((c1!=10)&&(c1!=';')); } } digitalWrite(LED_BUILTIN, LOW); } } void setup() { // initialize serial: Serial.begin(9600); if (Serial.available()>0) Serial.read(); pinMode(LED_BUILTIN,OUTPUT); digitalWrite(LED_BUILTIN,LOW); } void loop() { get_cmd(); }