PIEZO+LED#2(아기상어)
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define PIEZO_PIN 8
int ledArr[] = {3,5,6};
int ledSize = sizeof(ledArr)/sizeof(int);
int ledArr2[] = {11,10,9};
int ledSize2 = sizeof(ledArr2)/sizeof(int);
//notes in the melody:
int melody[] = {
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
0,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
0,
NOTE_A4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
};
// note durations: 4 = quarter note, 8 = eighth note, etc
int noteDurations[] = {
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
2,
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
2,
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
};
void setup(){
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
pinMode(ledArr2[i], OUTPUT);
}
for (int thisNote = 0; thisNote < sizeof(melody) / sizeof(melody[0]); thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
tone(PIEZO_PIN, melody[thisNote],noteDuration);
ledON(melody[thisNote]);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(PIEZO_PIN);
ledOFF();
}
}
void loop(){}
void ledON(int piezo_melody)
{
if((piezo_melody == NOTE_E4) || (piezo_melody == NOTE_G4)){
digitalWrite(ledArr[0],HIGH);
digitalWrite(ledArr[1],HIGH);
digitalWrite(ledArr2[1],HIGH);
}
if(piezo_melody == NOTE_C4){
digitalWrite(ledArr[1],HIGH);
digitalWrite(ledArr2[2],HIGH);
}
if((piezo_melody == NOTE_A4) || piezo_melody == NOTE_D4){
digitalWrite(ledArr[2],HIGH);
digitalWrite(ledArr2[2],HIGH);
}
if(piezo_melody == NOTE_F4){
digitalWrite(ledArr[0],HIGH);
digitalWrite(ledArr2[0],HIGH);
}
}
void ledOFF()
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i], LOW);
digitalWrite(ledArr2[i], LOW);
}
}
PIEZO + LED(학교종이 땡땡땡)
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_G4 392
#define NOTE_A4 440
#define PIEZO_PIN 8
int ledArr[] = {3,12,11,10};
int ledSize = sizeof(ledArr)/sizeof(int);
int melody[] = {
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,
NOTE_G4, NOTE_G4, NOTE_E4,
NOTE_G4, NOTE_G4, NOTE_E4, NOTE_E4,
NOTE_D4, 0,
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,
NOTE_G4, NOTE_G4, NOTE_E4,
NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4,
NOTE_C4,0};
int noteDurations[] = {
1,1,1,1,
1,1,2,
1,1,1,1,
3,1,
1,1,1,1,
1,1,2,
1,1,1,1,
3,1};
void setup() {
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
for (int thisNote = 0; thisNote < 26; thisNote++) {
int noteDuration = 250 * noteDurations[thisNote];
tone(PIEZO_PIN, melody[thisNote],noteDuration);
ledON(melody[thisNote]);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(PIEZO_PIN);
ledOFF();
}
}
void loop() {}
void ledON(int piezo_melody)
{
if((piezo_melody == NOTE_C4) || (piezo_melody == NOTE_D4))
digitalWrite(ledArr[0],HIGH);
if(piezo_melody == NOTE_E4)
digitalWrite(ledArr[1],HIGH);
if(piezo_melody == NOTE_G4)
digitalWrite(ledArr[2],HIGH);
if(piezo_melody == NOTE_A4)
digitalWrite(ledArr[3],HIGH);
}
void ledOFF()
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i], LOW);
}
}
PHOTO RESISTER 테스트
밝기값에 따라 달라지는 LED색깔
#define RED 3
#define GREEN 5
#define BLUE 6
int Cols[3] = {RED, GREEN, BLUE};
int colSize = sizeof(Cols) / sizeof(Cols[0]);
int Colors[][3]={
{0,0,0}, // OFF
{1,0,0}, // RED
{0,1,0}, // GREEN
{0,0,1}, // BLUE
{1,1,1}, // white
};
int numColors = sizeof(Colors)/sizeof(Colors[0][0])/3;
void setup()
{
pinMode(A0, INPUT);
for(int i=0; i<colSize; i++){
pinMode(Cols[i], OUTPUT);
}
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A0);
Serial.println(photoValue);
color_split(photoValue);
}
void color_split(int step)
{
int num;
if(step <300){
num = 0;
}
else if(step < 500){
num = 3;
}
else if(step < 700){
num = 2;
}
else if(step < 800){
num = 1;
}
else{
num = 4;
}
for(int i=0; i<3; i++)
digitalWrite(Cols[i],Colors[num][i]);
}
어두워지면 LED켜지기
void setup()
{
pinMode(A0, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A0);
Serial.println(photoValue);
if(photoValue < 300){
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
else{
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
}
포토레지스터 값 모니터링
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A0);
Serial.println(photoValue);
}
온도에 따른 RGB LED 색깔변화
#include <DHT11.h>
#define RED_LED 3
#define BLUE_LED 6
#define GREEN_LED 5
int pin=A0;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
pinMode(RED_LED,OUTPUT);
pinMode(BLUE_LED,OUTPUT);
pinMode(GREEN_LED,OUTPUT);
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("온도:");
Serial.print(temp);
if(temp < 28.0f){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,HIGH);
}
else if(temp>=28.0f && temp < 30.0f){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,LOW);
}
else if(temp >= 30.0f){
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,LOW);
}
Serial.print("C 습도:");
Serial.print(humi);
Serial.println("%");
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000);
}
온도습도 모니터링
#include <DHT11.h>
int pin=A0;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("온도:");
Serial.print(temp);
Serial.print("C 습도:");
Serial.print(humi);
Serial.println("%");
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000);
}
시리얼 통신 사용하기#2
int interval = 200;
int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr)/sizeof(int);
int led_mode=99;
unsigned long previousMillis = 0;
void setup()
{
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
}
Serial.begin(9600);
}
int sys_cnt = 0;
void loop() {
unsigned long currentMillis = millis();
if(Serial.available() > 0){
String str = Serial.readStringUntil('\n');
led_mode = str.toInt();
Serial.print(led_mode);
}
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
mode_select(led_mode);
sys_cnt++;
}
}
void mode_select(int mode)
{
switch(mode){
case 0:
led_blink();
break;
case 1:
led_LtoR();
break;
case 2:
led_RtoL();
break;
case 3:
led_weighted_LtoR();
break;
case 4:
led_weighted_RtoL();
break;
default:
led_off();
break;
}
}
void led_LtoR()
{
int count = sys_cnt%ledSize;
for(int i=0; i<ledSize; i++){
if(i==count)
digitalWrite(ledArr[i], HIGH);
else
digitalWrite(ledArr[i], LOW);
}
Serial.println(count);
}
void led_RtoL()
{
int count = (ledSize-1)-(sys_cnt%ledSize);
for(int i=0; i<ledSize; i++){
if(i==count)
digitalWrite(ledArr[i], HIGH);
else
digitalWrite(ledArr[i], LOW);
}
Serial.println(count);
}
void led_weighted_LtoR()
{
int count = sys_cnt%(ledSize+1);
if(count==ledSize)
led_off();
else
digitalWrite(ledArr[count], HIGH);
Serial.println(count);
}
void led_weighted_RtoL()
{
int count = ledSize - (sys_cnt%(ledSize+1));
if(count==ledSize)
led_off();
else
digitalWrite(ledArr[count], HIGH);
Serial.println(count);
}
void led_blink()
{
if(sys_cnt%2 == 0)
led_on();
else
led_off();
}
void led_on()
{
for(int i=0; i<ledSize; i++)
digitalWrite(ledArr[i], HIGH);
}
void led_off()
{
for(int i=0; i<ledSize; i++)
digitalWrite(ledArr[i], LOW);
}
시리얼 통신 사용하기
#define RED_LED 3
#define BLUE_LED 6
#define GREEN_LED 5
void setup()
{
Serial.begin(9600);
pinMode(RED_LED,OUTPUT);
pinMode(BLUE_LED,OUTPUT);
pinMode(GREEN_LED,OUTPUT);
}
void loop()
{
if(Serial.available() > 0){
String str = Serial.readStringUntil('\n');
Serial.print(str);
if(str == "RED" || str == "red"){
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,LOW);
Serial.println(" : RED LED 켜짐");
}
else if(str == "BLUE" || str == "blue"){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,HIGH);
Serial.println(" : BLUE LED 켜짐");
}
else if(str == "GREEN" || str == "green"){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,LOW);
Serial.println(" : Green LED 켜짐");
}
else if(str == "cyan" || str == "CYAN"){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,HIGH);
Serial.println(" : CYAN LED 켜짐");
}
else if(str == "magenta" || str == "MAGENTA"){
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,HIGH);
Serial.println(" : MAGENTA LED 켜짐");
}
else if(str == "yellow" || str == "YELLOW"){
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,LOW);
Serial.println(" : YELLOW LED 켜짐");
}
else if(str == "white" || str == "WHITE"){
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,HIGH);
Serial.println(" : WHITE LED ON");
}
else if(str == "off" || str == "OFF"){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,LOW);
Serial.println(" : LED 꺼짐");
}
else{
Serial.println(" : 입력한 명령어가 없습니다.");
}
}
}
RGB LED + 3LED FADE
#define UP 0
#define DOWN 1
const int minPWM = 0;
const int maxPWM = 255;
int pwmLED[] = {3,5,6,9,10,11};
int ledSize = sizeof(pwmLED)/sizeof(pwmLED[0]);
byte fadeDirection = UP;
int fadeValue = 0;
byte fadeIncrement = 5;
unsigned long previousFadeMillis;
int fadeInterval = 30;
int led_cnt = 0;
void setup() {
for(int i=0; i<ledSize; i++){
pinMode(pwmLED[i], OUTPUT);
analogWrite(pwmLED[i], fadeValue);
}
Serial.begin(9600);
Serial.println(led_cnt);
}
void doTheFade(unsigned long thisMillis) {
if (thisMillis - previousFadeMillis >= fadeInterval) {
if (fadeDirection == UP) {
fadeValue = fadeValue + fadeIncrement;
if (fadeValue > maxPWM) {
fadeValue = maxPWM;
fadeDirection = DOWN;
}
} else {
fadeValue = fadeValue - fadeIncrement;
if (fadeValue < minPWM) {
fadeValue = minPWM;
fadeDirection = UP;
led_cnt = (led_cnt+1 == ledSize) ? 0 : led_cnt+1;
Serial.println(led_cnt);
}
}
analogWrite(pwmLED[led_cnt], fadeValue);
previousFadeMillis = thisMillis;
}
}
void loop() {
unsigned long currentMillis = millis();
doTheFade(currentMillis);
}
https://www.baldengineer.com/fading-led-analogwrite-millis-example.html
RGB LED FADE
#define UP 0
#define DOWN 1
const int minPWM = 0;
const int maxPWM = 255;
int pwmLED[] = {3,5,6};
int ledSize = sizeof(pwmLED)/sizeof(pwmLED[0]);
byte fadeDirection = UP;
int fadeValue = 0;
byte fadeIncrement = 5;
unsigned long previousFadeMillis;
int fadeInterval = 30;
int led_cnt = 0;
void setup() {
for(int i=0; i<ledSize; i++){
pinMode(pwmLED[i], OUTPUT);
analogWrite(pwmLED[i], fadeValue);
}
Serial.begin(9600);
Serial.println(led_cnt);
}
void doTheFade(unsigned long thisMillis) {
if (thisMillis - previousFadeMillis >= fadeInterval) {
if (fadeDirection == UP) {
fadeValue = fadeValue + fadeIncrement;
if (fadeValue >= maxPWM) {
fadeValue = maxPWM;
fadeDirection = DOWN;
}
} else {
fadeValue = fadeValue - fadeIncrement;
if (fadeValue <= minPWM) {
fadeValue = minPWM;
fadeDirection = UP;
led_cnt = (led_cnt+1 == ledSize) ? 0 : led_cnt+1;
Serial.println(led_cnt);
}
}
analogWrite(pwmLED[led_cnt], fadeValue);
previousFadeMillis = thisMillis;
}
}
void loop() {
unsigned long currentMillis = millis();
doTheFade(currentMillis);
}
RGB LED 컨트롤
#define RED 3
#define GREEN 5
#define BLUE 6
const long interval = 500;
int ledArr[] = {RED,GREEN,BLUE};
int ledSize = sizeof(ledArr)/sizeof(int);
unsigned long previousMillis = 0;
int sys_cnt = 0;
int ledState[8][3] = {{LOW, LOW, LOW},
{HIGH, LOW, LOW}, //1RED
{LOW, HIGH, LOW}, //2GREEN
{LOW, LOW, HIGH}, //3BLUE
{HIGH, HIGH, LOW},//4RED+GREEN : YELLOW
{HIGH, LOW, HIGH}, //5RED+BLUE : Magenta
{LOW, HIGH, HIGH}, //6GREEN+BLUE: Cyan
{HIGH, HIGH, HIGH}}; //7WHITE
void setup()
{
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
}
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
sys_cnt = (sys_cnt%8 == 0) ? 0 : sys_cnt;
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i], ledState[sys_cnt][i]);
}
sys_cnt++;
}
}
3개의 LED 깜빡임-using millis
const long interval = 200;
int ledArr[] = {13,12,11};
int ledSize = sizeof(ledArr)/sizeof(int);
unsigned long previousMillis = 0;
int sys_cnt = 0;
int ledState[] = {LOW, LOW, LOW};
void setup()
{
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
}
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
sys_cnt = (sys_cnt%6 == 0) ? 0 : sys_cnt;
if (sys_cnt == 0) {
ledState[0] = HIGH;
ledState[1] = LOW;
ledState[2] = LOW;
}
else if (sys_cnt == 1){
ledState[0] = LOW;
ledState[1] = HIGH;
ledState[2] = LOW;
}
else if(sys_cnt == 2){
ledState[0] = LOW;
ledState[1] = LOW;
ledState[2] = HIGH;
}
else if (sys_cnt == 3){
ledState[0] = LOW;
ledState[1] = HIGH;
ledState[2] = LOW;
}
else if (sys_cnt == 4) {
ledState[0] = HIGH;
ledState[1] = LOW;
ledState[2] = LOW;
}
else{
ledState[0] = LOW;
ledState[1] = LOW;
ledState[2] = LOW;
}
for(int i=0; i<ledSize; i++)
digitalWrite(ledArr[i], ledState[i]);
sys_cnt++;
}
}
3개의 LED 한개씩 깜빡임-2(13->12->11)
int ledArr[] = {13,12,11};
int ledSize = sizeof(ledArr)/sizeof(int);
void setup()
{
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i], OUTPUT);
}
}
int sys_cnt = 0;
void loop()
{
sys_cnt = (sys_cnt%3 == 0) ? 0 : sys_cnt;
for(int i=0; i<ledSize; i++){
if(i == sys_cnt)
digitalWrite(ledArr[i], HIGH);
else
digitalWrite(ledArr[i], LOW);
}
sys_cnt++;
delay(200);
}
3개의 LED 한개씩 깜빡임(13->12->11)
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
delay(200);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
delay(200);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
delay(200);
}
3개 한꺼번에 깜빡임
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}