トランジスター2SC1815を使ったLED制御です。
MOS-Fetを使ったLED制御です。
Arduino IDEのプログラムです。
/*
LED3個の2023/10/29
完成バージョン
https://sea-peoples.com/
led_flashi_3piece_complete.ino
*/
class flash {
int ledPin;
long OnTime;
long OfTime;
long WAITETime1;
long WAITETime2;
int loopcount;
int ledState;
int ledmove;
int setcount;
int led;
unsigned long setMillis1;
unsigned long setMillis2;
public:
//---------(pin w1 on off w2 loop)--------
flash (int pin,long wate1 , long on, long off, long wate2 ,int lp ) {
ledPin = pin;
setcount=lp;
pinMode(ledPin, OUTPUT);
OnTime = on;
OfTime = off;
WAITETime1 = wate1;
WAITETime2 = wate2;
loopcount = 0;
led=0;
ledState = LOW;
setMillis1 = 0;
setMillis2 = 0;
}
void Update() {
unsigned long timeMillis = millis();
if (timeMillis - setMillis2 >= WAITETime1) {
if (setcount > loopcount) {
if ((ledState == LOW) && (led == 0)) { //最初の1回目はLEDがONでスタートするように
ledState = HIGH;
digitalWrite(ledPin, ledState);
led=1;
setMillis1 = timeMillis;
}
if((ledState == HIGH) && (timeMillis - setMillis1 >= OnTime)) {
setMillis1 = timeMillis;
ledState = LOW;
digitalWrite(ledPin, ledState);
} else {
if ((ledState == LOW) && (timeMillis - setMillis1 >= OfTime)) {
setMillis1 = timeMillis;
ledState = HIGH;
loopcount++;
digitalWrite(ledPin, ledState);
}
}
} else {
ledState = LOW;
digitalWrite(ledPin, ledState);
if (timeMillis - setMillis1 >= WAITETime2) {
loopcount=0;
setMillis1 = timeMillis;
setMillis2 = timeMillis;
led=0;
}
}
}
}
void lanpoff() {
ledmove = LOW;
digitalWrite(ledPin , ledmove);
}
void lanpon() {
digitalWrite(ledPin , LOW);
}
};
int button = 4; // 停止ボタンピン
int swsts;
//----------pin w1 on off w2 loop-------
flash led1(6, 0, 100, 100 , 0, 1);
flash led2(7,100, 100, 100 , 0, 1);
flash led3(8,200, 100, 100 , 0, 1);
flash led4(LED_BUILTIN,0 , 50, 50,200,4); //基板LED
void setup() {
pinMode(button, INPUT_PULLUP);
}
void loop() {
int reading = analogRead(0);
//reading=0;
if (reading > 100 ) {
led1.lanpon();
led2.lanpon();
led3.lanpon();
}else {
led1.Update();
led2.Update();
led3.Update();
led4.Update();
}
}
行100の「if (reading > 100 )」 は、昼間に点灯しない光の量(CDSから入る明るさ)を数値化したものです。設置した場所は廊下でしたので、夜でも光があります。場所によって数値を調整してください。
※ポート番号は配線により異なります。配線に合わせて設定してください。
今回にLEDはダイソーのテープライトを使います。3色で、ブルー、ホワイト、ワームホワイトです。