|
发表于 2018-10-12 18:04:10
|
显示全部楼层
本帖最后由 eddiewwm 于 2018-10-12 18:08 编辑
若你已掌握了第一項,恭喜你!跟著就是第二項了。
按你的程序,你打算顯示的「不同圖形」,就是
u8g2.drawRFrame(40,17,30,22,7) 和 u8g2.drawRBox(80,25,20,25,5) 的實現結果。
在你的程序裡,你使用的 a="u8g2.drawRFrame(40,17,30,22,7)" 和 a; 的兩句,在 Arduino 雖是能接受,但編譯器會做出與你想像不同的結果,這點你要小心,因自已也沒搞清楚的語句,隨意放在程序裡,出問題是肯定的。簡單地用回原句,基本就可以達到你顯示「不同的圖形」的要求了。
剩下的「根據前面的判斷式去執行...」應如何做呢?一般做法是建立一個旗標,並以此作顯示的判斷,以下是給你參考的,努力!
int pin1 = 9; //Pin9
int pin2 = 10; //Pin10
int photocellPin1 = 3;
int val1 = 0;
bool a; //旗標
void setup() {
// put your setup code here, to run once:
u8g2.begin();
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
val1 = digitalRead(photocellPin1);
if (val1 == HIGH) {
digitalWrite(pin1, HIGH);
digitalWrite(pin2, LOW);
a = true; //設定旗標
}
else {
digitalWrite(pin1, LOW);
digitalWrite(pin2, HIGH);
a = false; //設定旗標
}
u8g2.firstPage();
do {
draw();
} while ( u8g2.nextPage() );
}
void draw() {
u8g2.setFont(u8g2_font_unifont_t_greek);
u8g2.setCursor(0, 16);
u8g2.print("HC-S Sensor PS");
// 使用旗標
if (a) {
u8g2.drawRFrame(40, 17, 30, 22, 7);
}
else {
u8g2.drawRBox(80, 25, 20, 25, 5);
}
} |
|