การกำหนดปุ่มกด (Keypad) เป็นชุดตัวเลข เพื่อสั่ง สัญญาณPWM ออกไปใช้งาน 🛠 ให้ Input A1 , Output pin ~9

:hammer_and_wrench:ต้องการกำหนดปุ่มกด(Keypad) เป็นชุดตัวเลข ครับ ต้องทำยังไงครับ เช่น กด 5,10,15,20,25,30,35,…225
:hammer_and_wrench:ให้ Input A1 , Output pin ~9
:sparkles:ตัวอย่างการกด
เช่น :zap::zap:

กด 0   inputA1= 1024 
กด 10   inputA1= 1000
กด 15  inputA1 = 950
กด 20   inputA1= 900
กด 25  inputA1 = 850
กด 30   inputA1= 800
กด 35 inputA1 = 750
กด 40   inputA1= 700
กด 45 inputA1 = 650
กด 50   inputA1= 600
กด 55 inputA1 = 550
กด 60   inputA1= 500
กด 65 inputA1 = 450
กด 70   inputA1= 400
กด 75 inputA1 = 350
กด 80   inputA1= 300
กด 85 inputA1 = 250
กด 90   inputA1= 200
กด 95 inputA1 = 150
กด 100   inputA1= 100
กด 105 inputA1 = 50
กด 110   inputA1= 0

ประมาณนี้ครับ :sparkles:จะทำได้ไหมครับช่วนแนะนำผมหน่อยครับ
:pray::pray::sparkles:

ต่อมาจากกระทู้นี้ครับ :pray::sparkles::hammer_and_wrench:

//โค้ดตัวอย่างครับ✨
:hammer_and_wrench:อันนี้กดปุ่มสั่งได้ที่ล่ะตัวครับ

#include <Keypad.h>

float xxx;
unsigned long pwm1;

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
int inputA1;

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

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  pinMode(9, OUTPUT);
TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(COM1B0) | _BV(WGM11); 
TCCR1B = _BV(WGM13) | _BV(CS11);
  
  Serial.begin(9600);
}
  
void loop(){  
 

  char key = keypad.getKey();// Read the key

  if(key == '0'){ //เมื่อ กด 0 เข้าเงื่อนไขนี้
      inputA1 = 1024; // แทนค่า inputA1 ด้วย 1024 ที่ทำให้ PWM มี dutycycle 5 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '1'){ //เมื่อ กด 1 เข้าเงื่อนไขนี้
      inputA1 = 900; // แทนค่า inputA1 ด้วย 900 ที่ทำให้ PWM มี dutycycle 10 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '2'){ //เมื่อ กด 2 เข้าเงื่อนไขนี้
      inputA1 = 800; // แทนค่า inputA1 ด้วย 800 ที่ทำให้ PWM มี dutycycle 15 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '3'){ //เมื่อ กด 3 เข้าเงื่อนไขนี้
      inputA1 = 700; // แทนค่า inputA1 ด้วย 700 ที่ทำให้ PWM มี dutycycle 20 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '4'){ //เมื่อ กด 4 เข้าเงื่อนไขนี้
      inputA1 = 600; // แทนค่า inputA1 ด้วย 600 ที่ทำให้ PWM มี dutycycle 30 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '5'){ //เมื่อ กด 5 เข้าเงื่อนไขนี้
      inputA1 = 500; // แทนค่า inputA1 ด้วย 500 ที่ทำให้ PWM มี dutycycle 40 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '6'){ //เมื่อ กด 6 เข้าเงื่อนไขนี้
      inputA1 = 400; // แทนค่า inputA1 ด้วย 400 ที่ทำให้ PWM มี dutycycle 50 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '7'){ //เมื่อ กด 7 เข้าเงื่อนไขนี้
      inputA1 = 300; // แทนค่า inputA1 ด้วย 300 ที่ทำให้ PWM มี dutycycle 60 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '8'){ //เมื่อ กด 8 เข้าเงื่อนไขนี้
      inputA1 = 200; // แทนค่า inputA1 ด้วย 200 ที่ทำให้ PWM มี dutycycle 70 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '9'){ //เมื่อ กด 9 เข้าเงื่อนไขนี้
      inputA1 = 100; // แทนค่า inputA1 ด้วย 100 ที่ทำให้ PWM มี dutycycle 80 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '*'){ //เมื่อ กด * เข้าเงื่อนไขนี้
      inputA1 = 50; // แทนค่า inputA1 ด้วย 50 ที่ทำให้ PWM มี dutycycle 90 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
  }
  if(key == '#'){ //เมื่อ กด # เข้าเงื่อนไขนี้
      inputA1 = 0; // แทนค่า inputA1 ด้วย 0 ที่ทำให้ PWM มี dutycycle 100 %
      Serial.println(String("Read inputA1 = ")+ inputA1);
 }

 ICR1 = 62.5; 
pwm1 = inputA1; 

xxx = float(pwm1);

xxx = xxx * ICR1;

xxx = xxx / 512;

OCR1A = int(62.5-(xxx/2));
}

เบื้องต้นศึกษาการทำงานของกระทู้นี้ครับ ลองประยุกค์ดู

1 Like

จะศึกษาดูครับ ขอบคุณข้อมูลครับ:sparkles::pray:

ถ้าผมไม่ได้ใช้ LCD จะทำยังไงครับ

กระทู้ที่ส่งให้ไปมันมีจุดที่อธิบายผิด ไปสักหน่อย เดียวจะรีไวต์ ให้อ่านอีกรอบครับ เดียวจะเข้าใจผิด

1 Like

ผมต้องทำยังไงต่อครับ😁

ผมงง ต้องทำอะไรครับ555

บวกค่า key ด้วย key += key;

1 Like

มีตัวอย่างไหมครับ🙏

ผมลองหาข้อมูลดูแล้วก็ไม่มีนะ มีแต่แบบใส่ ตัวเดียว ไหนลองหาข้อมูลการ บวกค่า ตัวแปร char + char มาหน่อยว่ามันมีวิธีไหนบ้างครับ

ผมลองแล้วไม่เวิก์ค

https://www.myarduino.net/article/76/บทความ-สอนใช้งาน-arduino-ตัวแปรใน-arduino

บทความในไทยไม่น่ามีครับผมลองหาหมดละ

ผมต้องทำยังไงครับ :disappointed_relieved:

คงต้องเขียนโค้ต เองครับ แนวทางคือ รับค่า key ตัวที่ 1 มาก่อน จากนั้น รอรับค่า key ตัวที่ 2 เพื่อส่งค่า 2 หลักที่เรากำหนดไว้ออกมา

ว่างๆ จะเขียนตัวอย่างให้ดูครับ

1 Like

ขอบคุณพี่มากครับ
ผมพยายามศึกษาอยู่ครับ แต่ผมไม่ค่อยเก่งเรื่องโค้ดเท่าไหร่ครับ :pray:

มีข้อมูลเพิ่มอะไรเอามาแปะไว้ในนี้ได้ครับ

1 Like

Screenshot_2563_0706_150117

คำสั่งนี้คืออะไรครับ