BASIC4MCU | 질문게시판 | 서브모터,I2C LCD, RFID, 버튼을 이용한 아두이노
페이지 정보
작성자 돕고살려주세요 작성일2023-11-30 21:54 조회1,364회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23464
본문
#include<Servo.h>#include<SPI.h>#include<MFRC522.h>#include<Wire.h>#include<LiquidCrystal_I2C.h>#define SS_PIN 10#define RST_PIN 9MFRC522 mfrc522(SS_PIN, RST_PIN);LiquidCrystal_I2C lcd(0x27, 16, 2);Servo servo;int a,b,c,d;void setup() {Serial.begin(9600);SPI.begin();lcd.begin(2,16);pinMode(OUTPUT, 5);pinMode(OUTPUT, 6);pinMode(OUTPUT, 7);pinMode(OUTPUT, 8);mfrc522.PCD_Init();lcd.print(" Press Button");}void loop() {lcd.clear();lcd.print(" Press the button ");a = digitalRead(5);b = digitalRead(6);c = digitalRead(7);d = digitalRead(8);Serial.print(a);Serial.print(b);Serial.print(c);Serial.print(d);/////////////////////////////////////////if(a==0){lcd.clear();lcd.print(" Press the button ");lcd.print(" give me your card");delay(9000);if( ! mfrc522.PICC_IsNewCardPresent()){return;}if(! mfrc522. PICC_ReadCardSerial()){return;}Serial.print("UID tag : ");String content = "";byte letter;for(byte i =0; i<mfrc522. uid.size; ++i){Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " ");Serial.print(mfrc522.uid.uidByte[i], HEX);content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " "));content.concat(String(mfrc522.uid.uidByte[i], HEX));}Serial.println();Serial.print("Message : ");content.toUpperCase();if(content.substring(1) =="2B 3C C9 23"){servo.attach(A0);servo.write(80);delay(2000);servo.detach();delay(2000);lcd.clear();lcd.print(" Take the cookies");delay(5000);}}if(b==0){lcd.clear();lcd.print(" Press the button ");lcd.print(" give me your card");delay(9000);if( ! mfrc522.PICC_IsNewCardPresent()){return;}if(! mfrc522. PICC_ReadCardSerial()){return;}Serial.print("UID tag : ");String content = "";byte letter;for(byte i =0; i<mfrc522. uid.size; ++i){Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " ");Serial.print(mfrc522.uid.uidByte[i], HEX);content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " "));content.concat(String(mfrc522.uid.uidByte[i], HEX));}Serial.println();Serial.print("Message : ");content.toUpperCase();if(content.substring(1) =="2B 3C C9 23"){servo.attach(2);servo.write(80);delay(2000);servo.detach();delay(2000);lcd.clear();lcd.print(" Take the cookies");delay(5000);}}if(c==0){lcd.clear();lcd.print(" Press the button ");lcd.print(" give me your card");delay(9000);if( ! mfrc522.PICC_IsNewCardPresent()){return;}if(! mfrc522. PICC_ReadCardSerial()){return;}Serial.print("UID tag : ");String content = "";byte letter;for(byte i =0; i<mfrc522. uid.size; ++i){Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " ");Serial.print(mfrc522.uid.uidByte[i], HEX);content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " "));content.concat(String(mfrc522.uid.uidByte[i], HEX));}Serial.println();Serial.print("Message : ");content.toUpperCase();if(content.substring(1) =="2B 3C C9 23"){servo.attach(3);servo.write(80);delay(2000);servo.detach();delay(2000);lcd.clear();lcd.print(" Take the cookies");delay(5000);}}if(d==0){lcd.clear();lcd.print(" Press the button ");lcd.print(" give me your card");delay(9000);if( ! mfrc522.PICC_IsNewCardPresent()){return;}if(! mfrc522. PICC_ReadCardSerial()){return;}Serial.print("UID tag : ");String content = "";byte letter;for(byte i =0; i<mfrc522. uid.size; ++i){Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " ");Serial.print(mfrc522.uid.uidByte[i], HEX);content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " "));content.concat(String(mfrc522.uid.uidByte[i], HEX));}Serial.println();Serial.print("Message : ");content.toUpperCase();if(content.substring(1) =="2B 3C C9 23"){servo.attach(4);servo.write(80);delay(2000);servo.detach();delay(2000);lcd.clear();lcd.print(" Take the cookies");delay(5000);}}delay(100);}}제가 유튜브를 보고 RFID를 이용한 자판기를 만들어 볼려고 하는데, 유튜브에 있는대로 따라해봤지만 LCD에는 검은색 블록이 나열되어 출력이 되고, 버튼을 누른 뒤 RFID에 카드(RFID)를 접촉시키면, 360도 서브모터가 돌아가 과자가 떨어지게 행동이 됐어야 하는데, 어떠한 문제가 있는건지 RFID도 인식을 못하고, button을 눌러도 아무런 반응을 하지 않습니다. 핀도 모두 lcd는 아날로그 쪽에, RFID는 디지털 쪽에 점프선을 연결 했는데도 안됩니다. 혹시 어떠한 문제가 있는지, 해결방안도 설명해주시면 감사하겠습니다.라이브러리도 다 깔았고 lcd의 주소도 확인하여 맞췄습니다. 제가 아두이노를 접한지 얼마 되지 않아서 도와주시면 감사하겠습니다.혹시 제가 틀렸을수도 있으니, 제가 본 유튜브 링크 남겨보겠습니다.작동방식1. LCD에 "Press the button" 이라는 문구가 뜬다.2. Give me your card라는 문구가 뜨면 RFID에 카드를 접촉시킨다.3.그 버튼에 해당하는 서브모터가 돌아가면서 과자를 떨어뜨린다.4.lcd에 Take the cookies라는 문구가 뜬다5.lcd가 다시 초기화 한다.
댓글 1
조회수 1,364master님의 댓글
master 작성일LCD 예제/ RFID예제/ 서보모터 예제/ 스위치예제/로 충분히 학습한 후에 다시 시도 해보세요