โครงการของผมทำตู้จำหน่ายกระดาษทิชชู่ครับ
เงื่อนไขที่กลุ่มผมนำเสนอคือสามารถรับได้ทุกเหรียญแต่ทอนตังไม่ได้ มีจอlcdแสดงเงินที่หยอดเข้าไปครับ
ถ้าสินค้าในรางหมดจะมีไฟแสดงว่าของหมด
อุปกรณ์ที่มี
มีสวิตซ์ 3ตัว
มอเตอร์ DC 6 V 3ตัว
L298N 2ตัว
Arduino mega2560 1ตัว
ชุดรับเหรียญแบบรับเหรียญ 1 2 5 10 1ตัว
จอlcd 16x2 1ตัว
เซนเซอร์ 3ตัว
ทิชชู่ขายราคา5บาทครับ
ตอนนี้ผมติดปัญหาเรื่องการเขียนโปรแกรมครับ คือ ผมไม่รู้ว่าจะต้องใช้โค้ตอะไรใน
การกำหนดการทำงานว่าถ้าเงินเข้ามา5บาทสามารถกดสวิตซ์สั่งมอเตอร์ทำงานได้ 1 ครั้ง
แต่ถ้าไม่ถึงคือกดไม่ได้ครับ
และก็มอเตอร์ที่ผมซื้อมันเป็นมอเตอร์เกียร์ DC ธรรมดาอ่ะคับผมเลยลองตั้งdelayเวลาเพื่อจะให้เวลากดสวิตซ์แล้วทำงานครบ1รอบพอดีครับ
แต่คือผมกดแล้วไม่ติดอะครับต้องกดรั่วถึงติดหรือบ้างครั้งก็กดแช่ถึงติดอ่ะครับแต่พอติดคือหมุนตามเวลาที่ตั้งไว้อ่ะครับ
มีวิธีแก้ไขไหมคับ
ช่วยแนะนำด้วยนะครับ ขอบคุณครับ
เขียนผิดถูกยังไงก็ขออภัยไว้ ณ ที่นี้ด้วยน่ะครับ
ไม่เคยเขียนกระทู้มาก่อนเลยครับ
โค้ตที่ผมเขียนได้ตอนนี้คับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้//LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
volatile float coinsValue = 0;
int coinsChange = 0;
byte customChar[] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
//Sersor
int switchPin = 30;
int ledPin = 32;
int ledPin2 = 34;
//Sersor2
int switchPin2 = 31;
int ledPin3 = 33;
int ledPin4 = 35;
//Sersor3
int switchPin3 = 36;
int ledPin5 = 38;
int ledPin6 = 40;
int switchState = 0;
// Motor A
int Switch = 3;
int dir1PinA = 22;
int dir2PinA = 24;
int speedPinA = 11;
// Motor B
int Switch2 = 18;
int dir1PinB = 23;
int dir2PinB = 25;
int speedPinB = 12;
// Motor C
int Switch3 = 19;
int dir1PinC = 26;
int dir2PinC = 28;
int speedPinC = 13;
void setup()
{
//LCD
lcd.begin();
lcd.setCursor(4, 0);
lcd.print("WELCOME");
lcd.setCursor(0, 1);
lcd.print("INSERTCOIN 5Bath");
lcd.createChar(0, customChar);
lcd.setCursor(11, 0);
lcd.write(0);
attachInterrupt(digitalPinToInterrupt(2), coinInserted, RISING);
//Sersor
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
//Sersor2
pinMode(switchPin2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
//Sersor3
pinMode(switchPin3, INPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
//Motor A
pinMode(Switch, INPUT);
pinMode(dir1PinA, OUTPUT);
pinMode(dir2PinA, OUTPUT);
pinMode(speedPinA, OUTPUT);
//Motor B
pinMode(Switch2, INPUT);
pinMode(dir1PinB, OUTPUT);
pinMode(dir2PinB, OUTPUT);
pinMode(speedPinB, OUTPUT);
//Motor C
pinMode(Switch3, INPUT);
pinMode(dir1PinC, OUTPUT);
pinMode(dir2PinC, OUTPUT);
pinMode(speedPinC, OUTPUT);
}
void coinInserted() {
coinsValue = coinsValue + 1;
coinsChange = 1;
}
void loop()
{
//LCD
if (coinsChange == 1) {
coinsChange = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CREDIT");
lcd.setCursor(7, 0);
lcd.print(coinsValue);
lcd.setCursor(12, 0);
lcd.print("Bath");
}
//Sersor
switchState = digitalRead(switchPin);
if (switchState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
if (switchState == HIGH) {
digitalWrite(ledPin2, LOW);
}
else {
digitalWrite(ledPin2, HIGH);
}
//Sersor2
switchState = digitalRead(switchPin2);
if (switchState == HIGH) {
digitalWrite(ledPin3, HIGH);
}
else {
digitalWrite(ledPin3, LOW);
}
if (switchState == HIGH) {
digitalWrite(ledPin4, LOW);
}
else {
digitalWrite(ledPin4, HIGH);
}
//Sersor3
switchState = digitalRead(switchPin3);
if (switchState == HIGH) {
digitalWrite(ledPin5, HIGH);
}
else {
digitalWrite(ledPin5, LOW);
}
if (switchState == HIGH) {
digitalWrite(ledPin6, LOW);
}
else {
digitalWrite(ledPin6, HIGH);
}
//Motor A
analogWrite(speedPinA, 255);
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
if (digitalRead(Switch) == HIGH)
digitalWrite(speedPinA, HIGH);
else
digitalWrite(speedPinA, LOW);
delay(4500);
//Motor B
analogWrite(speedPinB, 255);
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, HIGH);
if (digitalRead(Switch2) == HIGH)
digitalWrite(speedPinB, HIGH);
else
digitalWrite(speedPinB, LOW);
//Motor C
analogWrite(speedPinC, 255);
digitalWrite(dir1PinC, LOW);
digitalWrite(dir2PinC, HIGH);
if (digitalRead(Switch3) == HIGH)
digitalWrite(speedPinC, HIGH);
else
digitalWrite(speedPinC, LOW);
}
สอบถามเกี่ยวกับโค้ดที่ใช้เขียนในArduinoหน่อยคับ
เงื่อนไขที่กลุ่มผมนำเสนอคือสามารถรับได้ทุกเหรียญแต่ทอนตังไม่ได้ มีจอlcdแสดงเงินที่หยอดเข้าไปครับ
ถ้าสินค้าในรางหมดจะมีไฟแสดงว่าของหมด
อุปกรณ์ที่มี
มีสวิตซ์ 3ตัว
มอเตอร์ DC 6 V 3ตัว
L298N 2ตัว
Arduino mega2560 1ตัว
ชุดรับเหรียญแบบรับเหรียญ 1 2 5 10 1ตัว
จอlcd 16x2 1ตัว
เซนเซอร์ 3ตัว
ทิชชู่ขายราคา5บาทครับ
ตอนนี้ผมติดปัญหาเรื่องการเขียนโปรแกรมครับ คือ ผมไม่รู้ว่าจะต้องใช้โค้ตอะไรใน
การกำหนดการทำงานว่าถ้าเงินเข้ามา5บาทสามารถกดสวิตซ์สั่งมอเตอร์ทำงานได้ 1 ครั้ง
แต่ถ้าไม่ถึงคือกดไม่ได้ครับ
และก็มอเตอร์ที่ผมซื้อมันเป็นมอเตอร์เกียร์ DC ธรรมดาอ่ะคับผมเลยลองตั้งdelayเวลาเพื่อจะให้เวลากดสวิตซ์แล้วทำงานครบ1รอบพอดีครับ
แต่คือผมกดแล้วไม่ติดอะครับต้องกดรั่วถึงติดหรือบ้างครั้งก็กดแช่ถึงติดอ่ะครับแต่พอติดคือหมุนตามเวลาที่ตั้งไว้อ่ะครับ
มีวิธีแก้ไขไหมคับ
ช่วยแนะนำด้วยนะครับ ขอบคุณครับ
เขียนผิดถูกยังไงก็ขออภัยไว้ ณ ที่นี้ด้วยน่ะครับ
ไม่เคยเขียนกระทู้มาก่อนเลยครับ
โค้ตที่ผมเขียนได้ตอนนี้คับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้