아두이노 digitalRead 관련 질문
-
게시물 수정 , 삭제는 로그인 필요
현재 아두이노 2개를 사용하여 NFC 터치가 감지되면 두 개의 스테핑 모터가 연동되는 프로그램을 짜고 있습니다. 아두이노1 12번 핀(pin name: feedback1)과 아두이노2 7번 핀(pin name: feedback2)을 선으로 연결해서 아두이노1 12번핀이 HIGH상태가 되면 아두이노2 7번 핀이 HIGH 상태가 되어 스테핑모터2가 동작하도록 프로그래밍해뒀습니다.
그런데 2번 스테핑 모터가 NFC 터치가 한 번이라도 감지되면 그 다음부터는 감지가 되지 않았음에도 계속해서 동작을 하더군요?
그래서 LED(아두이노2 13번 핀, pin name: on)를 사용해서 출력을 확인해본 결과
if(digitalRead(feedback2) == HIGH)가 계속 만족되어서 LED가 계속 켜져있더라구요.
혹시 몰라서 feedback1 값이 HIGH로 남아있는지도 확인해봤는데 그건 아니었습니다.
1. 혹시 digitalRead 값은 제가 직접 바꿔주기 전까지는 값을 변화시킬 수는 없나요?
2. 만약 그렇다면 값을 변화시키는 명령어가 따로 있나요?
참고로 스테핑 모터는 28BYJ-48 , NFC모듈은 PN532, UNO보드 사용했습니다.
<코드>
//UNIT1(ARDUINO1 & RFID & STEPPING1)
/*
#include <Adafruit_PN532.h>
#include <Stepper.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#define PN532_SCK (2)
#define PN532_MOSI (3)
#define PN532_SS (4)
#define PN532_MISO (5)
#define PN532_IRQ (2)
#define PN532_RESET (3)
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
#if defined(ARDUINO_ARCH_SAMD)
#define Serial SerialUSB
#endif
int steps = 2048;
int a=0;
int stop=1;
int feedback1 = 12;
Stepper stepper(steps, 11, 9, 10, 8);
void setup() {
stepper.setSpeed(10);
pinMode(12,OUTPUT);
#ifndef ESP82266
while(!Serial);
#endif
Serial.begin(115200);
Serial.println("Hello!");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1);
}
Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
nfc.SAMConfig();
Serial.println("Waiting for an ISO14443A card");
}
void loop() {
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if(success && stop) a=1;
if(a)
{
stop=0;
digitalWrite(feedback1,HIGH);
stepper.step(steps/360*120);
delay(5000);
stepper.step(-steps/360*120);
delay(1000);
digitalWrite(feedback1,LOW);
a=0;
stop=1;
}
}
*/
//UNIT2(ARDUINO2 & STEPPING2)/*
#include <Stepper.h>
int steps = 2048;
int feedback2 = 7;
int on=13;
int a=0;
Stepper stepper(steps, 11, 9, 10, 8);
void setup() {
stepper.setSpeed(10);
pinMode(7,INPUT);
pinMode(13,OUTPUT);
}
void loop() {
if(digitalRead(feedback2) == HIGH)
{
digitalWrite(on,HIGH);
}
else
{
digitalWrite(on,LOW);
}
}
*/
#아두이노 digitalread #아두이노 digitalread 속도 #아두이노 digitalread 전압