제가 가지고 있는 키트는 Sparkfun Inventor's Kit 이고 UNO Rev3가 들어있습니다.
두번째 예제까지 따라했는데 급 재미없어져가지고
랜덤으로 지랄을 하게끔 만들었습니다.
가끔 랜덤숫자 두개가 겹칠때가 있어서 안겹치게 처리하는 코드를 추가했습니다. ㅎㅎ
랜덤함수가 시작과 끝을 지정할수 있어서 정말 쉽고 좋습니다. ㅋㅋ
int ledPins[]={9,8,7,6,5,4,3,2}; void setup() { for(int i=0;i<8;i++) pinMode(ledPins[i],OUTPUT); } void loop() { int rand=random(8); int rand2=random(7); if(rand==rand2) rand2=(rand2+1)%8; digitalWrite(ledPins[rand],HIGH); delay(50); digitalWrite(ledPins[rand2],HIGH); delay(50); digitalWrite(ledPins[rand],LOW); delay(50); digitalWrite(ledPins[rand2],LOW); delay(50); }1. 빵판과 LED, 저항
2. 전선을 2번부터 9번까지 꼽았습니다.
3. 5V와 GND에 연결, 왜 검은선을 안주지...
4. 다 꼽은 모습
BASIC4MCU | 질문게시판 | 아두이노 for문에 random함수 가능한지 질문입니다!
페이지 정보
작성자 호식이 작성일2020-12-30 01:18 조회15,616회 댓글3건- ↑이전글
- ↓다음글
- 목록
- 글쓰기
본문
단순히 random함수는 작동이 되는데 반복문에서는 랜덤이 깨집니다.
저는 반복문안에서 램덤하게 빛이 들어올 줄 알았는데 아니더라구요..ㅜㅠ
led 2,4번이 켜진 후 led가 10번 램덤하게 2개씩 빛이나게끔 loop로 코드 짠것입니다.
random함수가 안깨지면서 반복할 수 있는 방법이 있을까요?
감사합니다.
int ledPins[]={2,3,4,5,6,7,9,10,11,12,13};
int i;
void setup() {
for(int i=0;i<11;i++)
pinMode(ledPins[i],OUTPUT);
}
void loop() {
int rand=random(11);
int rand2=random(7);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
delay(1000);
for(int i=0;i<10;i++){
if(rand==rand2) rand2=(rand2+1)%8;
digitalWrite(ledPins[rand],HIGH);
delay(100);
digitalWrite(ledPins[rand2],HIGH);
delay(100);
digitalWrite(ledPins[rand],LOW);
delay(100);
digitalWrite(ledPins[rand2],LOW);
delay(100);}
}
master님의 댓글
master 작성일 20-12-30 15:06 int ledPins[]={2,3,4,5,6,7,9,10,11,12,13};
int i;
//
void setup() {
for(int i=0;i<11;i++)pinMode(ledPins[i],OUTPUT);
}
//
void loop() {
digitalWrite(2,1); digitalWrite(4,1); delay(1000);
digitalWrite(2,0); digitalWrite(4,0); delay(1000);
//
int rand=random(11);
int rand2=random(7);
if(rand==rand2)rand2=(rand2+1)%8;
//
for(int i=0;i<10;i++){
digitalWrite(ledPins[rand],1); digitalWrite(ledPins[rand2],1); delay(100);
digitalWrite(ledPins[rand],0); digitalWrite(ledPins[rand2],0); delay(100);
}
}
랜덤 변수가 변경될 이유는 안보입니다.
호식이님의 댓글
호식이 제가 질문을 자세하게 못했네요 죄송합니다
for문 안에 10번이 작동하는 동안 동일한 led가(ex, led2, led4)10번이 작동이 되서 문제였습니다.
for문안에서 10번이 작동되는 횟수만큼 led변화도 10번만큼 대응되게 주고 싶었습니다.
master님의 댓글
master 작성일 20-12-30 17:19 for(int i=0;i<10;i++){
int rand=random(11);
int rand2=random(7);
if(rand==rand2)rand2=(rand2+1)%8;
digitalWrite(ledPins[rand],1); digitalWrite(ledPins[rand2],1); delay(100);
digitalWrite(ledPins[rand],0); digitalWrite(ledPins[rand2],0); delay(100);
}
}
반복문 안에서 랜덤 변수를 얻으면 됩니다.
- ↑이전글
- ↓다음글
- 목록
- 글쓰기