angle=angle*10+ch-'0';這段我看不是往懂,我的了解是angle=(angle*10)+(ch-'0')
字母-字母=都沒有了(a-a=0)
1-0(字母1-字母0差一格)
2-0差兩格 …以此類推
括號起來字元就變數值了
*10倍幫忙轉十進位,後面加是個位數即一位一位相加(乘10變十進位,+多少變個位數)
1.先輸入9, angle=angle*10+9-‘0’ ……angle=9
2.再輸入0,angle=9*10+0-‘0’ ……angle=90
3. 再輸入a,跳到else if(ch==’a’),執行servo.write(90);嗎?
最後重設角度angle=0代表沒有任何角度,下次要在讀值又重新開始十位數+個位數
20a、90a代表三個字母,只要是Serial,COM傳永遠是字母
鍵盤都是ascii、電報看的到的字母
字母可以比大小加單引號(ch-‘0’)
PC傳數字(整數數值例長短整數即binary)、字母
int angle = 0;
char ch = '7';
int x = 0;
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
angle = angle * 10 + (ch - '0');
Serial.println(angle);
}
void loop()
{
// put your main code here, to run repeatedly:
if (x == 0)
{
ch='0';
angle = angle * 10 + (ch - '0');
Serial.println(angle);
x = 1;
}
if(angle==90 && x==1)
{
Serial.println("you got it!!");
x=100;
}
}
沒有留言:
張貼留言