주황색 부분은 천을 하나 덧대어 입체적으로
#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 |