기계과 다니는 프로그램 늅늅임..
if문 배열 저장하는데 결과가 이상해서 나와서 질문 한다.
적외선 센서가 켜짐에 따라 값을 배열로 EEPROM에 저장하고 모터가 움직이는 코드를 짜고 있는데
왼쪽 적외선 센서가 켜져도 오른쪽 적외선 센서가 켜질때 값인 110이 저장되고 있음
if문에 문제가 있는거 같은데 찾을 수가 없어....
void loop() {
unsigned char button;
button = digitalRead(8);
if(button == HIGH){
int i;
int n=0 ;
unsigned int RBelow = digitalRead(A2); // 하부 Right 적외선 센서
unsigned int LBelow = digitalRead(A3); // 하부 Left 적외선 센서
unsigned long currentMillis = millis();
if(LBelow ==HIGH) /// 하부 Left 적외선 on , Right 적외선 off
{
Data[n][0] = 120; // n행 1열에 Speed값(120) 입력
Data[n][1]= 0; n++; // 그다음 n행 2열에 0 입력
left(); // 좌회전
}
if(RBelow == HIGH) /// 하부 Left 적외선 off , Right 적외선 on
{
Data[n][0] = 0; // n행 1열에 0값 입력
Data[n][1]= 110; n++; // 그다음 n행 2열에 Speed값(120) 입력
right(); // 우회전
}
Data[n][2]= currentMillis; //n행 3열에 현재시간 입력
Serial.print(Data[n][0]);
Serial.print(" ");
Serial.print(Data[n][1]);
Serial.print(" ");
Serial.println(Data[n][2]);
byte hiByte = highByte(Data[n][0]);
byte loByte = lowByte(Data[n][0]);
byte hiByte1 = highByte(Data[n][1]);
byte loByte1 = lowByte(Data[n][1]);
byte hiByte2 = highByte(Data[n][2]);
byte loByte2 = lowByte(Data[n][2]);
EEPROM.write(addr, hiByte); EEPROM.write(addr+1, loByte); EEPROM.write(addr+2, hiByte1);
EEPROM.write(addr+3, loByte1); EEPROM.write(addr+4, hiByte2); EEPROM.write(addr+5, loByte2);
addr = addr + 6;
if (addr == 510) addr = 0;
}
0 0 8076
0 0 8097
0 0 8118
0 0 8139
//////////////// Left 적외선 센서가 켜진 구간 ...-----> 120 0 8160 , 120 0 8181, ....이 나와야함
0 110 8160
0 110 8181
0 110 8202
0 110 8223
0 110 8244
0 110 8265
0 110 8286
0 110 8307
0 110 8328
0 110 8349
0 110 8370
0 110 8391
0 110 8412
0 110 8433
0 110 8454
0 110 8475
0 110 8497
0 110 8517
0 110 8539
0 110 8559
////////////////
0 0 8581
0 0 8601
0 0 8622
0 0 8643
0 0 8664
0 0 8685
0 0 8706
0 110 8727
0 110 8748
0 110 8769
0 110 8790
0 110 8811
0 110 8832
0 110 8853
0 110 8873
0 110 8895
0 110 8915
0 110 8937
0 110 8957
0 110 8979
0 110 8999
0 110 9021
0 110 9041
0 110 9063
0 110 9083
0 110 9105
0 110 9125
0 110 9147
0 110 9167
댓글 0