Ok
Il codice è c++ per arduino
codice:
#include <String.h>
#include <avr/io.h>
#include <avr/wdt.h>
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
void(* Riavvia)(void) = 0;
void steps(int nStep, char coord, char verso);
int val = 0;
String richiesta;
char carattere;
int baudrate = 9600;
int EsciCicloG0 = 0;
char richiesta1[100];
char coord;
char segno;
int nStep;
int n = 6;
int n1 = 0;
char stepp[20];
String Direzione;
void RiceviDati(){ //inizio funzione per ricevere dati
val = Serial.read();
carattere = val;
if(val != 92){
richiesta = richiesta + carattere;
carattere = ' ';
}
} //termine funzione
void AzzeraVariabiliSeriali(){ //inizio funzione di azzeramento variabili
richiesta = "";
val = 0;
} //termine funzione
void steps(int nStep, char coord, char verso){
int cont = 0;
int pin;
int dirPin;
if(coord == 'X'){
pin = 12;
dirPin = 15;
}
else if(coord == 'Y'){
pin = 11;
dirPin = 16;
}
else if(coord == 'Z'){
pin = 10;
dirPin = 17;
}
if(verso == '+'){
digitalWrite(dirPin, LOW);
}else{
digitalWrite(dirPin, HIGH);
}
do{
digitalWrite(pin, HIGH);
delay(2);
digitalWrite(pin, LOW);
delay(2);
cont++;
}while(cont != nStep);
cont = 0;
}
void setup() { //void setup start
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
Serial.begin(baudrate);
Serial.println("C0");
} //termine void setup
int i = 1;
void loop() {
if(Serial.available()){
EsciCicloG0 = 0;
RiceviDati();
richiesta.toCharArray(richiesta1, 100);
if(val == 92 || val == 0){ //AAAA
//Serial.println(richiesta);
if(richiesta == "C1"){
Riavvia();
}
if(richiesta == "M1"){
digitalWrite(13, HIGH);
Serial.println("Led = ON");
AzzeraVariabiliSeriali();
}else if(richiesta == "M2"){
digitalWrite(13, LOW);
Serial.println("Led = OFF");
AzzeraVariabiliSeriali();
}
if(richiesta1[0] == 'G' ){
//Serial.println(i);i++;//1
coord = richiesta1[3];
segno = richiesta1[4];
// Serial.println(segno);
//Serial.println(i);i++;//2
/*
do{
stepp[n1] = richiesta1[n];
n1++;
n++;
}while(richiesta[n] != '_');
*/
for(n=6, n1=0;richiesta[n] == '_';n++, n1++){stepp[n1] = richiesta1[n];}
//Serial.println(i);i++;//3
n = 6;
n1 = 0;
String stepps;
//Serial.println(i);i++;//4
//nStep =(int)stepp;
//stepps.toCharArray(stepp, 20);
stepps = (String)stepp;
//Serial.println(stepps);
// Serial.println(stepp);
//Serial.println(i);i++;//5
nStep = stepps.toInt();
//Serial.print(nStep);
//Serial.println(i);i++;//6
steps(nStep, coord, segno);
//Serial.println(i);i++;//7
Serial.print("OK");
}
else{
Serial.println("Errore!");
Serial.print(richiesta);
AzzeraVariabiliSeriali();
}
AzzeraVariabiliSeriali();
}
}
}