จะปรึกษาเรื่อง การเขียนโปรแกรม Arduino เกี่ยวกับการกดKeypadแล้วหลอกLEDติด
จะต่อออก blynk ด้วยหรอครับ
หนูทำโปรเจคค่ะ แล้วจะไห้LEDแสดงผลด้วยการกดคีย์แพด สมมุติว่ากดตัวเลขใดตัวเลขหนึ่งLEDดวงนั้นก็จะติดประมานนี้ค่ะ
ก็ประมาณว่า มี R อยู่ 30 ค่า แต่ละค่ามี LED ติดอยู่ ซึ่งถ้าจะหาค่านั้น ก็กดค่าของ R ลงไปที่ Keypad แล้วก็ไปติดที่ค่านั้น
หมายถึง ใส่ค่า R ครั้งที่ 1 100 โอมต์ led1 ติด ใส่ค่า R ครั้งที่ 2 300 โอมต์ led2 ติด ใช่ไหมครับ
เบื้องต้นหาข้อมูลเกี่ยวกับการส่งค่า แอสกี้โค้ต จากคีย์บอร์ดก่อนครับ ดูว่าต่ออย่างไรใช้โค้ตอะไร รับค่าให้ได้ก่อน
แล้วค่อยไปสเตปต่อไปมีอุปกรณ์ในมือแล้วหรือยังตอนนี้
คือกดkeypadครั้งที่1กดค่า100 LEDที่ติดไว้ที่ค่า100จะติด ประมาณนี้ค่ะ
มีค่ะ
คือมีอุปกรณ์ครบทุกอย่างแล้วค่ะ
ลองต่อแล้วเทสดูเลย ติดตรงไหนก็เข้ามาถามต่อได้ครับ
คือตอนนี้มีโคตสำหรับkeypadแล้ว
เเต่จะเอามาสั่งงานไห้LEDติด
ทำไม่ได้ค่ะ
เอาโค้ตมาดูหน่อยครับ
#include <Keypad.h>
int Buzzer = 13;
int LED = 12;
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {8, 7, 6 , 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 3, 2}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
Serial.print(" Keypad Test ");
Serial.print("Key = ");
pinMode(Buzzer,OUTPUT);
pinMode (LED,OUTPUT);
digitalWrite(Buzzer,LOW);
}
void loop()
{char key;
key = keypad.getKey();
if (key != NO_KEY)
{
Serial.print(key);
Beep();
}
key = keypad.getKey();
delay(50);
if (key >= "1234")
{
digitalWrite(LED,1);
delay(500);
digitalWrite(LED,0);
delay(500);
}
}
void Beep()
{
digitalWrite(Buzzer,HIGH);delay(50);
digitalWrite(Buzzer,LOW);
}
อันนี้เป็นที่เขียนกับเพื่อน
แล้วเขียนค้างใว้
ไปต่อไม่ได้
ติดปัญหา กดค่าแล้ว led ไม่ติดใช่ไหม
ใช่ค่ะ ติดอยู่เเค่ตรงนี้
ใช้ตัวดำเนินการผิดนะครับ
if (key >= "1234")
{
digitalWrite(LED,1);
delay(500);
digitalWrite(LED,0);
delay(500);
}
ชนิดของตัวแปนเป็น char แต่เราใช้ >=
นั้นมันเอาไว้ใช้กับตัวเลขเท่านั้น จริงๆ ควรใช้ตัวดำเนินการคือ ==
ใช้แบบนี้มันจะไม่เข้า loop if
ต้องใช้แบบนี้
if (key == "1234")
{
digitalWrite(LED,1);
delay(500);
digitalWrite(LED,0);
delay(500);
}
ลองเทสดูครับ
โค้ตทั้งหมดถูกใช่ไหมค่ะ
อ่านที่ผมคอมเม้นยังครับ