mickeyhuang 发表于 2018-10-12 08:56:06

[求助]請求幫忙呼叫的方式

想請問各位先進, 小弟學習不深, 怎麼樣都是不出來, 想請問
我想在OLED 屏上顯示圖型, 但是要根據前面的判斷式去執行
所以設定 a 在 void draw() 裡面
因判斷式結果把 資料送到 a 去執行
但是我試過恨很多種方式, 無法用這種方式把命令call 進去
想問問有甚麼方式呢? ( 小弟翻閱很多資料, 還是無法弄懂)
謝謝

int pin1 = 9;   //Pin9
int pin2 = 10;   //Pin10
int photocellPin1 = 3;
int val1 = 0;         
char a;
U8G2_SSD1306_128X64_NONAME_2_SW_I2C u8g2 (U8G2_R0, A5, A4);

void setup(void) {
u8g2.begin();   
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);

}

void loop() {
val1 = digitalRead(photocellPin1);
    if(val1==HIGH){
   digitalWrite(pin1, HIGH);
   digitalWrite(pin2, LOW);
       a="u8g2.drawRFrame(40,17,30,22,7)";
       }
else{
   digitalWrite(pin1, LOW);
   digitalWrite(pin2, HIGH);
      a="u8g2.drawRBox(80,25,20,25,5)";
   }

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");
a;
}

通幽境 发表于 2018-10-12 10:58:37

不能这么玩的,建议重新学习C语言

eddiewwm 发表于 2018-10-12 17:01:16

你的要求主要包括兩項:
1) 在OLED 屏上顯示圖型
2) 根據前面的判斷式去執行不同的圖形

第一項你是否已能掌握?

eddiewwm 发表于 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);
}
}

mickeyhuang 发表于 2018-10-12 21:13:43

eddiewwm 发表于 2018-10-12 17:01
你的要求主要包括兩項:
1) 在OLED 屏上顯示圖型
2) 根據前面的判斷式去執行不同的圖形


大大你好

第一項 在OLED 上面顯示圖型 , 這個部分是可以的
只是加上判斷式後去執行所要顯示的圖型時 ,就出不來
這是我目前碰到的問題
所以才來這邊尋求大大們的幫忙

謝謝

mickeyhuang 发表于 2018-10-14 23:06:16

eddiewwm 发表于 2018-10-12 18:04
若你已掌握了第一項,恭喜你!跟著就是第二項了。

按你的程序,你打算顯示的「不同圖形」,就是


感謝大大 你明白我的需求
我測試過了,這就是我所要的
這也讓我學習到另外不同的想法

感謝大大
页: [1]
查看完整版本: [求助]請求幫忙呼叫的方式