동시에 FADE
// 동시에 FADE
int ledArr[] = {11};
int fadeTime = 20;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int brightness = 0;
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
}
void loop()
{
for (brightness = 0; brightness <= 255; brightness += 5) {
for(int i=0; i<ledSize; i++){
analogWrite(ledArr[i], brightness);
}
delay(fadeTime);
}
for (brightness = 255; brightness >= 0; brightness -= 5) {
for(int i=0; i<ledSize; i++){
analogWrite(ledArr[i], brightness);
}
delay(fadeTime);
}
}
순서대로 FADE
// 순서대로 FADE
int ledArr[] = {11};
int fadeTime = 20;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int brightness = 0;
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
}
void loop()
{
for(int i=0; i<ledSize; i++){
for (brightness = 0; brightness <= 255; brightness += 5) {
analogWrite(ledArr[i], brightness);
delay(fadeTime);
}
for (brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(ledArr[i], brightness);
delay(fadeTime);
}
}
}
명령어에 따라 LED 켜고 끄기
int ledArr[] = {11};
String str;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
Serial.begin(9600); // 시리얼 통신 시작
}
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);
}
}
void loop()
{
if(Serial.available() > 0){
str = Serial.readStringUntil('\n');
Serial.print(str);
if(str == "on"){
led_on();
Serial.println(" : LED 켜짐");
}
else if(str == "off"){
led_off();
Serial.println(" : LED 꺼짐");
}
else{
Serial.println(" : 입력한 명령어가 없습니다.");
}
}
}
문자입력(on, off, up, down)
int ledArr[] = {11,10,9,6,5,3};
const long interval = 100;
String str;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
unsigned long previousMillis = 0;
int modeSelect = 0;
int ledCount = 0;
#define LED_OFF 0
#define LED_ON 1
#define LED_UP 2
#define LED_DOWN 3
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
Serial.begin(9600); // 시리얼 통신 시작
}
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);
}
}
void led_up(int count)
{
int i = ledSize - 1 - (count % ledSize);
for(int n=0; n<ledSize; n++){
if(n==i)
digitalWrite(ledArr[n], HIGH);
else
digitalWrite(ledArr[n], LOW);
}
}
void led_dn(int count)
{
int i = count % ledSize;
for(int n=ledSize-1; n>=0; n--){
if(n==i)
digitalWrite(ledArr[n], HIGH);
else
digitalWrite(ledArr[n], LOW);
}
}
void mode_selector(int mode)
{
switch(mode){
case LED_ON:
led_on();
break;
case LED_OFF:
led_off();
break;
case LED_UP:
led_up(ledCount);
break;
case LED_DOWN:
led_dn(ledCount);
break;
}
}
void loop()
{
if(Serial.available() > 0){
str = Serial.readStringUntil('\n');
Serial.print(str);
if(str == "on" || str == "ON"){
modeSelect = LED_ON;
Serial.println(" : LED 켜짐");
}
else if(str == "off" || str == "OFF"){
modeSelect = LED_OFF;
Serial.println(" : LED 꺼짐");
}
else if(str == "up" || str == "UP"){
modeSelect = LED_UP;
mode_selector(LED_OFF);
ledCount = 0;
Serial.println(" : LED 꺼짐");
}
else if(str == "dn" || str == "DN" ||
str == "down" || str == "DOWN"){
modeSelect = LED_DOWN;
mode_selector(LED_OFF);
ledCount = 0;
Serial.println(" : LED 꺼짐");
}
else{
Serial.println(" : 입력한 명령어가 없습니다.");
}
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval){
previousMillis = currentMillis;
mode_selector(modeSelect);
ledCount++;
}
}
relay 기능 추가
int ledArr[] = {11,10,9,6,5,3};
const long interval = 100;
String str;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
unsigned long previousMillis = 0;
int modeSelect = 0;
int ledCount = 0;
int mode_change = 0;
#define LED_OFF 0
#define LED_ON 1
#define LED_UP 2
#define LED_DOWN 3
#define LED_RELAY 4
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
Serial.begin(9600); // 시리얼 통신 시작
}
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);
}
}
void led_up(int count)
{
int i = ledSize - 1 - (count % ledSize);
for(int n=0; n<ledSize; n++){
if(n==i)
digitalWrite(ledArr[n], HIGH);
else
digitalWrite(ledArr[n], LOW);
}
}
void led_dn(int count)
{
int i = count % ledSize;
for(int n=ledSize-1; n>=0; n--){
if(n==i)
digitalWrite(ledArr[n], HIGH);
else
digitalWrite(ledArr[n], LOW);
}
}
void led_relay(int count)
{
if(mode_change == 0)
led_dn(count);
else
led_up(count);
}
void mode_selector(int mode)
{
switch(mode){
case LED_ON:
led_on();
break;
case LED_OFF:
led_off();
break;
case LED_UP:
led_up(ledCount);
break;
case LED_DOWN:
led_dn(ledCount);
break;
case LED_RELAY:
led_relay(ledCount);
// ledCount : 0부터 시작하므로 0~5까지가 한 Cycle
// 나눗셈은 1~6까지가 한묶음 : +1 해줘야함
mode_change = ((ledCount+1)/ledSize)%2;
break;
}
}
void loop()
{
if(Serial.available() > 0){
str = Serial.readStringUntil('\n');
Serial.print(str);
if(str == "on" || str == "ON"){
modeSelect = LED_ON;
Serial.println(" : LED 켜짐");
}
else if(str == "off" || str == "OFF"){
modeSelect = LED_OFF;
Serial.println(" : LED 꺼짐");
}
else if(str == "up" || str == "UP"){
modeSelect = LED_UP;
mode_selector(LED_OFF);
ledCount = 0;
Serial.println(" : LED 꺼짐");
}
else if(str == "dn" || str == "DN" ||
str == "down" || str == "DOWN"){
modeSelect = LED_DOWN;
mode_selector(LED_OFF);
ledCount = 0;
Serial.println(" : LED 꺼짐");
}
else if(str == "relay" || str ="RELAY"){
modeSelect = LED_RELAY;
mode_selector(LED_OFF);
ledCount = 0;
Serial.println(" : LED 번갈아 깜빡임");
}
else{
Serial.println(" : 입력한 명령어가 없습니다.");
}
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval){
previousMillis = currentMillis;
mode_selector(modeSelect);
ledCount++;
}
}
포토레지스터 연결하기 ( 연결저항은 10kΩ )
포토레지스터에 들어오는 빛의 세기를 값으로 표시
void setup()
{
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop()
{
int sensorValue = analogRead(A0);
Serial.print("Sensor value : ");
Serial.println(sensorValue);
}
센서값이 THR값보다 작으면 LED가 켜짐
int ledArr[] = {11,10,9,6,5,3};
const long interval = 100;
#define THR 500
String str;
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
unsigned long previousMillis = 0;
int modeSelect = 0;
#define LED_OFF 0
#define LED_ON 1
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
pinMode(A0, INPUT);
Serial.begin(9600); // 시리얼 통신 시작
}
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);
}
}
void mode_selector(int mode)
{
switch(mode){
case LED_ON:
led_on();
break;
case LED_OFF:
led_off();
break;
}
}
void loop()
{
int sensorValue = analogRead(A0);
Serial.print("Sensor value : ");
Serial.println(sensorValue);
if (sensorValue < THR)
modeSelect = LED_ON;
else
modeSelect = LED_OFF;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval){
previousMillis = currentMillis;
mode_selector(modeSelect);
}
}
밝기값에 따라 켜지는 LED개수 변화
int ledArr[] = {11,10,9,6,5,3};
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
pinMode(A0, INPUT);
Serial.begin(9600); // 시리얼 통신 시작
}
void led_add_on(int level)
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i],LOW);
}
for(int i=0; i<level; i++){
digitalWrite(ledArr[i],HIGH);
}
}
void loop()
{
int sensorValue = analogRead(A0);
int ledLevel = map(sensorValue, 0,1023, 0,7);
Serial.print("Sensor value : ");
Serial.print(sensorValue);
Serial.print(" map : ");
Serial.println(ledLevel);
led_add_on(ledLevel);
}
센서값이 어두워지면 LED가 깜빡이는 방법이 바뀜
#define THR 500
int ledArr[] = {11,10,9,6,5,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;
int flag = 0;
int modeCount = 0;
unsigned long fade_previousMillis = 0;
unsigned long previousMillis = 0;
const long interval = 150;
void setup()
{
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
pinMode(A0,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 mode_selection(int mode)
{
switch(mode%6){
case 0:
led_blink(ledCount);
ledCount++;
break;
case 1:
led_up2dn(ledCount);
ledCount++;
break;
case 2:
led_dn2up(ledCount);
ledCount++;
break;
case 3:
led_weighted_up2dn(ledCount);
ledCount++;
break;
case 4:
led_weighted_dn2up(ledCount);
ledCount++;
break;
default:
led_off();
break;
}
}
void loop() {
int inputValue = analogRead(A0);
Serial.print("Sensor : ");
Serial.print(inputValue);
Serial.print(" Mode : ");
Serial.println(modeCount);
if (inputValue < THR){
if(flag == 0){
flag = 1;
modeCount++;
ledCount = 0;
led_off();
delay(150);
}
}
else if(inputValue > (THR+150)){
if(flag == 1){
flag = 0;
}
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
mode_selection(modeCount);
}
}
'Embedded > Arduino' 카테고리의 다른 글
lilyPad-v211026 (0) | 2021.10.26 |
---|---|
lilyPad-v211025 (0) | 2021.10.25 |
Arduino-v211021 (0) | 2021.10.21 |
Arduino-v211020 (0) | 2021.10.20 |
Arduino-v211019 (0) | 2021.10.19 |