VCC : 5V / GND : 5V옆 GND / OUT : 2번
int ledArr[] = {12,11,10,9,8};
int ledSize = sizeof(ledArr)/sizeof(ledArr[0]);
int delayTime = 200;
int count =0;
int buttonPin = 2;
int flag = 0;
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i],OUTPUT);
}
void led_on_LR()
{
count = count % ledSize;
for(int i=0; i<ledSize; i++){
if(i == count){
digitalWrite(ledArr[i],HIGH);
}
else{
digitalWrite(ledArr[i],LOW);
}
}
delay(delayTime);
count++;
}
void led_on_RL()
{
count = count % ledSize;
for(int i=0; i<ledSize; i++){
if(i == ledSize-1-count){
digitalWrite(ledArr[i],HIGH);
}
else{
digitalWrite(ledArr[i],LOW);
}
}
delay(delayTime);
count++;
}
void led_blink()
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i],HIGH);
}
delay(delayTime);
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i],LOW);
}
delay(delayTime);
}
void led_off()
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i],LOW);
}
}
void ledChange(int modeCount)
{
if(modeCount%4 == 0)
led_off();
else if(modeCount%4 == 1)
led_on_LR();
else if(modeCount%4 == 2)
led_on_RL();
else
led_blink();
}
int modeCount = 0;
void loop()
{
int inputValue = digitalRead(buttonPin);
if (inputValue == HIGH) {
if (flag == 0){
flag = 1;
count=0;
modeCount++;
}
}
else {
if (flag == 1) {
flag = 0;
}
}
ledChange(modeCount);
}
# 2그룹의 LED가 번갈아 깜빡임
//이번코드의 경우 ledArr1의 LED와 ledArr2의 LED가 번갈아가며 켜짐
int ledArr1[] = {11,9};
int ledArr2[] = {10};
int ledSize1 = sizeof(ledArr1) / sizeof(ledArr1[0]);
int ledSize2 = sizeof(ledArr2) / sizeof(ledArr2[0]);
int buttonPin=2;
int ledCount=0;
int flag = 0;
void setup()
{
for(int i=0; i<ledSize1; i++){
pinMode(ledArr1[i], OUTPUT);
}
for(int i=0; i<ledSize2; i++){
pinMode(ledArr2[i], OUTPUT);
}
pinMode(buttonPin, INPUT);
}
void ledChange(int count)
{
if(count%2 == LOW){
for(int i=0; i<ledSize1; i++){
digitalWrite(ledArr1[i], HIGH);
}
for(int i=0; i<ledSize2; i++){
digitalWrite(ledArr2[i], LOW);
}
}
else{
for(int i=0; i<ledSize1; i++){
digitalWrite(ledArr1[i], LOW);
}
for(int i=0; i<ledSize2; i++){
digitalWrite(ledArr2[i], HIGH);
}
}
}
void loop()
{
int inputValue = digitalRead(buttonPin);
if (inputValue == HIGH) {
if (flag == 0){
flag = 1;
ledChange(ledCount);
ledCount++;
}
}
else {
if (flag == 1) {
flag = 0;
}
}
delay(100);
}
# LED가 번갈아 깜빡임
int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int buttonPin=2;
int ledCount=0;
int flag = 0;
void setup()
{
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
}
pinMode(buttonPin, INPUT);
}
void ledOn(int pinNum)
{
for(int i=0; i<ledSize; i++){
if(ledArr[i] == pinNum)
digitalWrite(ledArr[i], HIGH);
else
digitalWrite(ledArr[i], LOW);
}
}
void loop()
{
int inputValue = digitalRead(buttonPin);
if (inputValue == HIGH) {
if (flag == 0){
flag = 1;
int ledNum = ledCount % ledSize;
ledOn(ledArr[ledNum]);
ledCount++;
}
}
else {
if (flag == 1) {
flag = 0;
}
}
delay(100);
}
'Embedded > Arduino' 카테고리의 다른 글
Arduino_v220428 - piezo only (0) | 2022.04.28 |
---|---|
arduino_v220427 (0) | 2022.04.27 |
아두이노+RC카+적외선센서 제어 (0) | 2021.12.30 |
CAN Example #3 (0) | 2021.11.29 |
CAN Example #2 (0) | 2021.11.29 |