Certainly, here is the code without any additional phrases or comments:pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);
digitalWrite(PIN_RED, HIGH); // 빨간색 켜기digitalWrite(PIN_YELLOW, LOW); //digitalWrite(PIN_GREEN, LOW);delay(RED_TIME); // 일정 시간 동안 빨간색 LED를 켜져 있게 함
아두이노 나노 코드
/* * 이 아두이노 나노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 나노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-traffic-light */#define PIN_RED 3 // 아두이노 나노 핀, 트래픽 라이트 모듈의 R 핀에 연결됨#define PIN_YELLOW 4 // 아두이노 나노 핀, 트래픽 라이트 모듈의 Y 핀에 연결됨#define PIN_GREEN 5 // 아두이노 나노 핀, 트래픽 라이트 모듈의 G 핀에 연결됨#define RED_TIME 4000 // 밀리초 단위의 RED 시간#define YELLOW_TIME 4000 // 밀리초 단위의 YELLOW 시간#define GREEN_TIME 4000 // 밀리초 단위의 GREEN 시간voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// loop 함수는 무한히 반복됩니다voidloop() {// 빨간 불 켜짐digitalWrite(PIN_RED, HIGH); // 켜기digitalWrite(PIN_YELLOW, LOW); // 끄기digitalWrite(PIN_GREEN, LOW); // 끄기delay(RED_TIME); // 일정 시간 동안 빨간 불을 켜둡니다// 노란 불 켜짐digitalWrite(PIN_RED, LOW); // 끄기digitalWrite(PIN_YELLOW, HIGH); // 켜기digitalWrite(PIN_GREEN, LOW); // 끄기delay(YELLOW_TIME); // 일정 시간 동안 노란 불을 켜둡니다// 초록 불 켜짐digitalWrite(PIN_RED, LOW); // 끄기digitalWrite(PIN_YELLOW, LOW); // 끄기digitalWrite(PIN_GREEN, HIGH); // 켜기delay(GREEN_TIME); // 일정 시간 동안 초록 불을 켜둡니다}
사용 방법
위의 코드를 복사하고 Arduino IDE로 엽니다
Arduino IDE에서 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다
신호등 모듈을 확인하세요
교통 신호등의 정확한 작동 방식은 다양한 지역과 교차로에서 사용되는 특정 설계와 기술에 따라 달라질 수 있다는 점을 주목하는 것이 중요합니다. 위에서 설명한 원리들은 교통 신호등이 교통을 관리하고 도로의 안전을 향상시키는 방식에 대한 일반적인 이해를 제공합니다.
위 코드는 개별 조명 제어를 보여줍니다. 이제 코드를 개선하여 최적화를 더 잘 진행해봅시다.
아두이노 나노 코드 최적화
코드를 개선하기 위해 조명 제어 기능을 구현합시다.
/* * 이 아두이노 나노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 나노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-traffic-light */#define PIN_RED 3 // 아두이노 나노 핀이 교통 신호등 모듈의 R 핀에 연결됨#define PIN_YELLOW 4 // 아두이노 나노 핀이 교통 신호등 모듈의 Y 핀에 연결됨#define PIN_GREEN 5 // 아두이노 나노 핀이 교통 신호등 모듈의 G 핀에 연결됨#define RED_TIME 2000 // 밀리초 단위의 빨간색 시간#define YELLOW_TIME 1000 // 밀리초 단위의 노란색 시간#define GREEN_TIME 2000 // 밀리초 단위의 초록색 시간#define RED 0 // 배열 내의 인덱스#define YELLOW 1 // 배열 내의 인덱스#define GREEN 2 // 배열 내의 인덱스constint pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };constint times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// loop 함수는 무한히 반복됨voidloop() {// 빨간 불 켜기 trafic_light_on(RED);delay(times[RED]); // 일정 시간 동안 빨간 불 유지// 노란 불 켜기 trafic_light_on(YELLOW);delay(times[YELLOW]); // 일정 시간 동안 노란 불 유지// 초록 불 켜기 trafic_light_on(GREEN);delay(times[GREEN]); // 일정 시간 동안 초록 불 유지}void trafic_light_on(int light) {for (int i = RED; i <= GREEN; i++) {if (i == light)digitalWrite(pins[i], HIGH); // 켜기elsedigitalWrite(pins[i], LOW); // 끄기 }}
for 반복문을 사용하여 코드를 개선해 보자.
/* * 이 아두이노 나노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 나노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-traffic-light */#define PIN_RED 3 // Arduino Nano 보드의 R 핀에 연결된 핀#define PIN_YELLOW 4 // Arduino Nano 보드의 Y 핀에 연결된 핀#define PIN_GREEN 5 // Arduino Nano 보드의 G 핀에 연결된 핀#define RED_TIME 2000 // 밀리초 단위의 빨강 시간#define YELLOW_TIME 1000 // 밀리초 단위의 노랑 시간#define GREEN_TIME 2000 // 밀리초 단위의 초록 시간#define RED 0 // 배열에서의 인덱스#define YELLOW 1 // 배열에서의 인덱스#define GREEN 2 // 배열에서의 인덱스constint pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN};constint times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// loop 함수는 무한히 반복됨voidloop() {for (int light = RED; light <= GREEN; light ++) { trafic_light_on(light);delay(times[light]); // 일정 시간 동안 불을 켜둠 }}void trafic_light_on(int light) {for (int i = RED; i <= GREEN; i ++) {if (i == light)digitalWrite(pins[i], HIGH); // 켜기elsedigitalWrite(pins[i], LOW); // 끄기 }}
delay() 대신 millis() 함수를 사용하여 코드를 개선해 봅시다.
/* * 이 아두이노 나노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 나노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-traffic-light */#define PIN_RED 3 // 아두이노 나노 핀이 신호등 모듈의 R 핀에 연결됨#define PIN_YELLOW 4 // 아두이노 나노 핀이 신호등 모듈의 Y 핀에 연결됨#define PIN_GREEN 5 // 아두이노 나노 핀이 신호등 모듈의 G 핀에 연결됨#define RED_TIME 2000 // RED 시간(밀리초)#define YELLOW_TIME 1000 // YELLOW 시간(밀리초)#define GREEN_TIME 2000 // GREEN 시간(밀리초)#define RED 0 // 배열에서의 인덱스#define YELLOW 1 // 배열에서의 인덱스#define GREEN 2 // 배열에서의 인덱스constint pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };constint times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };unsignedlong last_time = 0;int light = RED; // 시작은 RED에서voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT); trafic_light_on(light); last_time = millis();}// loop 함수는 무한히 반복됨voidloop() {if ((millis() - last_time) > times[light]) { light++;if (light >= 3) light = RED; // 새로운 사이클 trafic_light_on(light); last_time = millis(); }// 할 일: 여러분의 다른 코드}void trafic_light_on(int light) {for (int i = RED; i <= GREEN; i++) {if (i == light)digitalWrite(pins[i], HIGH); // 켜기elsedigitalWrite(pins[i], LOW); // 끄기 }}
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.