본문 바로가기

Embedded/Arduino

Arduino-v211020

주황색 부분은 천을 하나 덧대어 입체적으로 

 

 

#define PIEZOPIN 2
 
int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int delayTime = 200;      // 깜빡임시간 지정(1초 =1000)
 
int ledsize = sizeof(ledArr)/ sizeof(int);
void setup()
{
  for(int i=0; i<ledsize; i++)
  	pinMode(ledArr[i], OUTPUT);

  pinMode(PIEZOPIN, OUTPUT);
  pinMode(A5,INPUT);
}
 
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 loop()
{
  led_blink();
}

 

여러가지 형태로 LED 깜빡이기

#define PIEZOPIN 2
 
int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;
int delayTime = 200;      // 깜빡임시간 지정(1초 =1000)
 
void setup()
{
  for(int i=0; i<ledSize; i++){
  	pinMode(ledArr[i], OUTPUT);
  }
  pinMode(PIEZOPIN, OUTPUT);
  pinMode(A5,INPUT);
}

void led_off()
{
  for(int i=0; i<ledSize; i++)
  	digitalWrite(ledArr[i], LOW);
}
 
void led_blink(int n)
{
  if(n%2 == 0){ 
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], HIGH);
    }
  }
  else{
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], LOW);
    }
  }
}
 
void led_up2dn(int n)
{
  n = n % (ledSize+1);
  for(int i =0; i<ledSize; i++){
    if (i == n)
      digitalWrite(ledArr[i], HIGH);
    else
      digitalWrite(ledArr[i], LOW);
  }
}
 
void led_dn2up(int n)
{
  n = n % (ledSize+1);
  for(int i=ledSize-1; i>=0; i--){
    if (i == (ledSize-1-n))
      digitalWrite(ledArr[i], HIGH);  
    else
      digitalWrite(ledArr[i], LOW);  
  }
}
 
void led_weighted_up2dn(int n)
{
  n = n % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
  	digitalWrite(ledArr[n], HIGH);
}
 
void led_weighted_dn2up(int n)
{
  n = n % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
  	digitalWrite(ledArr[ledSize-1-n], HIGH); 
}

void loop()
{
  for(int i=0; i<ledSize; i++){
    led_blink(ledCount);
    delay(delayTime);
    ledCount++;
  }
  ledCount=0;
  for(int i=0; i<ledSize+1; i++){
    led_up2dn(ledCount);
    delay(delayTime);
    ledCount ++;
  }
  ledCount=0;
  for(int i=0; i<ledSize+1; i++){
    led_dn2up(ledCount);
    delay(delayTime);
    ledCount ++;
  }
  ledCount=0;
  for(int i=0; i<ledSize+1; i++){
    led_weighted_up2dn(ledCount);
    delay(delayTime);
    ledCount ++;
  }
  ledCount=0;
  for(int i=0; i<ledSize+1; i++){
    led_weighted_dn2up(ledCount);
    delay(delayTime);
    ledCount ++;
  }
}

 

밝기센서값이 어두워지면 LED 반짝임 바뀌는 코드

#define PIEZOPIN 2
#define LED_FADE 0
#define THR 80
 
int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;
int flag = 0;


int modeCount = 0;
int fadeCount = 0;
int fadeDirection = 1;

unsigned long fade_previousMillis = 0;
unsigned long previousMillis = 0;

const long fade_interval = 20;           
const long interval = 150;


 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);

  pinMode(PIEZOPIN, OUTPUT);
  pinMode(A5,INPUT);
  
  Serial.begin(9600);
}

void led_off()
{
  for(int i=0; i<ledSize; i++)
      digitalWrite(ledArr[i], LOW);
}

 
void led_blink(int count)
{
  if(count%2 == 0){ 
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], HIGH);
    }
  }
  else{
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], LOW);
    }
  }
}
 
void led_up2dn(int count)
{
  int n = count % (ledSize+1);
  for(int i =0; i<ledSize; i++){
    if (i == n)
      digitalWrite(ledArr[i], HIGH);
    else
      digitalWrite(ledArr[i], LOW);
  }
}
 
void led_dn2up(int count)
{
  int n = count % (ledSize+1);
  for(int i=ledSize-1; i>=0; i--){
    if (i == (ledSize-1-n))
      digitalWrite(ledArr[i], HIGH);  
    else
      digitalWrite(ledArr[i], LOW);  
  }
}
 
void led_weighted_up2dn(int count)
{
  int n = count % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
  	digitalWrite(ledArr[n], HIGH);
}
 
void led_weighted_dn2up(int count)
{
  int n = count % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
  	digitalWrite(ledArr[ledSize-1-n], HIGH); 
}

void led_fade()
{ 
  for(int i=0; i<ledSize; i++)
      analogWrite(ledArr[i], ledCount);
  
  if(ledCount == 255) 
  	fadeDirection = -1;
  
  if(ledCount == 0) 
  	fadeDirection = 1;
    
  ledCount += (5*fadeDirection);
  //Serial.println(ledCount);
}

void mode_selection(int mode)
{
  switch(mode%7){
    case 0:
    	led_fade();
    	break;
    case 1:
    	led_blink(ledCount);
    	ledCount++;
    	break;
    case 2:
    	led_up2dn(ledCount);
    	ledCount++;
    	break;
    case 3:
    	led_dn2up(ledCount);
    	ledCount++;
    	break;
    case 4:
    	led_weighted_up2dn(ledCount);
    	ledCount++;
    	break;
    case 5:
    	led_weighted_dn2up(ledCount);
    	ledCount++;
    	break;
    default:
    	led_off();
    	break;
  }
}


void loop() {
  int inputValue = analogRead(A5);
  Serial.print(inputValue);
  Serial.print(" ");
  Serial.println(modeCount);
  if (inputValue < THR){
    if(flag == 0){
      flag = 1;
      modeCount++;
      ledCount = 0;
      led_off();
      delay(150);
    }
  }
  else{
    if(flag == 1){
      flag = 0;
    }
  }
  
  unsigned long currentMillis = millis();
  if (modeCount == 0){
    if (currentMillis - fade_previousMillis >= fade_interval){
      fade_previousMillis = currentMillis;
      mode_selection(modeCount);
    }
  }
  else{
    if (currentMillis - previousMillis >= interval) {
        previousMillis = currentMillis;
        mode_selection(modeCount);
    }
  }
  
}

'Embedded > Arduino' 카테고리의 다른 글

Arduino-v211022  (0) 2021.10.22
Arduino-v211021  (0) 2021.10.21
Arduino-v211019  (0) 2021.10.19
Arduino-v211018  (0) 2021.10.18
LilyPad - 0719  (0) 2021.07.19