Hello
I've written a program where the arduino DUE recieves serial data, reads an analog pin and then sends what it read back into the serial. This program works perfectly:
int ThisStationNumber = 01; //Example Station Number.
void setup(){
Serial.begin(9600);
char number1[2] = {0,0}; //Resets
char number2[2] = {0,0};
char number3[2] = {0,0};
char number4[2] = {0,0};
analogReadResolution(12); //Changes the resolution from 10bits to 12bits. CAUTION: WONT WORK WITH OTHER ARDUINOS BUT DUES
}
void loop(){
if (Serial.available() >= 9){ //Reads buffer only when there's 9 or more bits stored.
char number1[2] = { Serial.read(), Serial.read() };
char number2[2] = { Serial.read(), Serial.read() };
char number3[2] = { Serial.read(), Serial.read() };
char number4[2] = { Serial.read(), Serial.read() };
int barraene = Serial.read();
int CommandToStation = atoi(number1), StationNumber = atoi(number2), Instruction = atoi(number3), Channel = atoi(number4);
if (CommandToStation == 00) { //Verifies if package starts with Command To Station
if (StationNumber == ThisStationNumber){ //Verifies if Station Numbers match
switch (Instruction){ //Verifies witch instruction to follow
case 0x0:
break;
case 0x1:
break;
case 0x2:
break;
case 0x3:
break;
case 0x4:
break;
case 0x5:
break;
case 0x6:{
int sensor = analogRead(Channel); //Reads AD pin
int Voltage = map(sensor, 0, 4095, 0, 3300); //Converts the read voltlage, from 0 - 4095 to 0 3300 (max voltage 3.3 on due)
char SVoltage[4];
itoa(Voltage, SVoltage, 10);
char answer[7] {'0','1',SVoltage[0],SVoltage[1],SVoltage[2],SVoltage[3],'\n'};
Serial.write(answer);
}
break;
case 0x7:
break;
case 0x8:
break;
case 0x9:
break;
case 0xA:
break;
case 0xB:
break;
case 0xC:
break;
case 0xD:
break;
case 0xE:
break;
case 0xF:
break;
case 0x10:
break;
case 0x12:
break;
case 0x13:
break;
case 0x14:
break;
case 0x15:
break;
case 0x16:
break;
case 0x17:
break;
case 0x18:
break;
case 0x19:
break;
case 0x1A:
break;
case 0x1B:
break;
}
}
}
}
}
If it recieves "00010601\n" it will go to case 6, read the analog pin 01 and then answer.