union uData { byte b[2]; int value; };
union uData data; void setup() { Serial.begin(9600); delay(1000); }
void loop() { data.value=0x3456; Serial.write(0x21);//起始 字元 Serial.write(data.b[0]); Serial.write(data.b[1]); delay(1000); } | 或
union uData { byte b[2]; int value; };
union uData data; void setup() { Serial.begin(9600); delay(1000); }
void loop() { data.value=0x3456; Serial.write(0x21);//起始 字元 Serial.write(data.b,2); delay(1000); } |
#define Led 12 union uData { byte b[2]; int value; };
union uData data; void setup() { Serial.begin(9600); pinMode(Led,OUTPUT); digitalWrite(Led,1); }
void loop() { if(Serial.available()>0) { if(Serial.read()==0x21) //判斷是否為起始字元 { //delay(10);//若資料傳遞不正確 可再加長 // Wait until data is received (不用delay) while ( !(UCSR0A & (1 << RXC0)) ) ; data.b[0]=Serial.read(); //delay(10);//若資料傳遞不正確 可再加長 // Wait until data is received (不 用delay) while ( !(UCSR0A & (1 << RXC0)) ) ; data.b[1]=Serial.read(); if(data.value==0x3456) { //Toggle D12
digitalWrite(Led,1-digitalRead(Led)); //asm("SBI 0x03,4"); } } } } |
或
#define Led 12
union uData
{
byte b[2];
int value;
};
union uData data;
void setup() {
Serial.begin(9600);
pinMode(Led,OUTPUT);
digitalWrite(Led,1);
}
void loop() {
if(Serial.available()>0)
{
if(Serial.read()==0x21) //判斷是否為起始字元
{
// delay(10);//若資料傳遞不正確 可再加長
Serial.readBytes(data.b,2);
if(data.value==0x3456)
{
//Toggle D12
digitalWrite(Led,1-digitalRead(Led));
//asm("SBI 0x03,4");
}
}
}
} |
或 使用interrupt
#define Led 12 union uData { byte b[2]; int value; };
union uData data;
void serialEvent() { if(Serial.available()>0) { if(Serial.read()==0x21) //判斷是否為起始字元 { Serial.readBytes(data.b,2); if(data.value==0x3456) { //Toggle D12 digitalWrite(Led,1-digitalRead(Led)); //asm("SBI 0x03,4"); } } } } void setup() { Serial.begin(9600); pinMode(Led,OUTPUT); digitalWrite(Led,1); }
void loop() { } | 或
#define Led 12 volatile int flag=0; union uData { byte b[2]; int value; };
union uData data;
void serialEvent() { if(Serial.available()>0) { if(Serial.read()==0x21) //判斷是否為起始字元 { Serial.readBytes(data.b,2); if(data.value==0x3456) { flag=1-flag; } } } } void setup() { Serial.begin(9600); pinMode(Led,OUTPUT); digitalWrite(Led,1); }
void loop() { digitalWrite(Led,flag); } | |