코드 작성을 잘 한것 같은데 오류가 발생함확인해보니 IDE에서 이게 문법인지 아닌지 구분이 안가기 때문에 변수명만 수정하면 정상작동이 가능하다고 함오류가 항상 뜨는게 아니라 뜰때가 있고 뜨지 않을때가 있어서 문제없는 줄 알아서 더 당황함. 수정 후 정상적으로 작동이 잘되는 모습 근데... 조이스틱 손안대는데 약간 기울어 있는지 혼자서 마구 출력을 해버린다.
코드도 정상이고 보드에 점등되는걸 보면 이상이 없는건데 점등이 되질 않는다. 코드를 컴파일 해봐도 오류없이 잘 작동하는데 뭐가 문제일까... 팀장님이 로직 애널라이저라는걸 주셔서 체크해봐는데 듀티비도 일정하게 잘 나온다. 결국 팀장님이 오셔서 하나씩 체크해주셨는데, 그라운드가 어디까지 연결이 되어있는지 세로 기준인지 가로 기준인지 체크하시더니, 빵판이 4가지 영역으로 나뉘어서 동일한 그라운드에 있어야 작동한다고 하셔서 바로 전원부만 led쪽으로 옮겼더니 해결이 되었다. 내가 가지고 있는 빵판은 총 4가지 영역으로 나뉘어서 그라운드가 연결되지 않는 문제였다. 나름 학교에서 전공공부 열심히 했다고 생각했는데 이런 간단한 곳에서도 헤맬줄이야...오실레이터도 실습때 빨리 통과하고 집에 가려고 대충대충하고 ..
void setup() { Serial.begin(9600); pinMode(7,OUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT); analogWrite(7,51); analogWrite(6,51); analogWrite(5,51);}void loop() { Serial.println("Time is gold"); delay(1000);} 분명 7번도 활성화 했는데 왜 너만 안될까아무생각 없이 핀선택을 해서 활성화를 했는데 제일 처음 보드를 받으면 확인했어야하는 아날로그, 디지털, PWM 동작하는 것들 이런 기본적인 것들을 너무 쉽게 지나간거 같다. 아두이노 우노 기준으로 PWM 출력이 가능한 핀이 정해져있기 때문에, 난 현재 밝기 80%로 설정했음. PWM은 속도 제..
왜 굳이 print를 2번 사용할까?Serial.print("x = ");Serial.println(x); 함수도 선언이 되어있어서 호출해서 사용하면 되는게 아닌가 생각이 들어서 int x = 10;Serial.println("x = " + x); // ❌ 에러 발생 이렇게 사용을 해봤는데 C/C++ 에서는 문자열 상수와 숫자를 더할 수 없기 때문에 오류가 발생한다고 한다.정확한 이유는 컴파일러가 const char* + int를 포인터 연산으로 인식하기 때문에 엉뚱한 주소로 출력이 되어 생기기때문이라고 한다. 그래서 보통은 String으로 변환을 하여 사용을 하는데int x = 10;Serial.println("x = " + String(x)); // ✅ OK.이렇게 사용하면 오류없이 사용이 가능하다...
1. C에서는 왜 u를 붙일까?u는 insinged를 축약해놓은 건데 C에서는 int 이외에도 unsigned int가 존재한다. 굳이 이렇게 구분을 해둔 이유는 2가지가 있다. 이유 1 타입을 명확하게 구분하기 위해서unsigned int x = 100u; 이유 2 오버플로우/비교 오류를 방지하기 위해서if (someUnsignedValue > -1) // ❌ 경고 발생 가능 이유 3 16비트, 32비트, 64비트 등 크기 제어를 위해서uint16_t x = 65535u; // 16비트 최대값uint32_t y = 4294967295u; // 32비트 최대값 2. 아두이노에서는 어디에 사용이 될까?analogRead() 값을 비교할 때millis()와 같이 unsigned long 반환값을..