(超音波噴霧耕)装置 でのArduino Pro Miniは溶液の自動補給だったが、2号機ではミスメーカーの制御を担っている。IC555での制御は卒業。


■
養液槽へ自動補給 の仕組みは利用せず。実際 溶液はあまり消費されなかったので手動での補充とする。
■ミストセンサーのスケッチは
Ver3-2のままだが回路図ESP32の23pin出力からダイオード噛まして汲上ポンプを制御。Pro Miniの出力と干渉しないようにした。
■LEDはすべて抵抗入りを利用
■ミストメーカー AB交互20分、汲上ポンプ20秒運転のスケッチはOKWaveで教えてもらったもので理解不能だが載せておく。
■Arduinoは一個で済むと思うが自分のスキルでは統一できなかった。マルチタスクがまだ理解できていない。
#include <MsTimer2.h>#define SW_P 2 // Uno: pin2(int.0) pin3(int.1) sw_port 固定const unsigned char LED_P[] = { 3 , 4 , 5 }; // led 1 2 3 port 3,4MM 5汲上ポンプ#define LED_ON HIGH#define LED_OFF LOW#define LED1_MAX 12000 // 20分#define LED3_MAX 200 // 20秒
volatile unsigned char sw_flag = 0;
void sw_isr(void) {sw_flag = 1; //1-0dame}
void led_isr(void) {static unsigned int led1_cnt = 0 , led3_cnt = 0;if ( led1_cnt == 0 ) {digitalWrite( LED_P[0] , LED_ON );digitalWrite( LED_P[1] , LED_OFF );}if ( led1_cnt == LED1_MAX ) {digitalWrite( LED_P[0] , LED_OFF );digitalWrite( LED_P[1] , LED_ON );}led1_cnt++; if ( led1_cnt >= ( LED1_MAX * 2 ) ) {led1_cnt = 0 ;}if ( sw_flag == 0 ) {return;}if ( led3_cnt == 0 ) {digitalWrite( LED_P[2] , LED_ON );}led3_cnt++; if ( led3_cnt >= LED3_MAX ) {digitalWrite( LED_P[2] , LED_OFF );led3_cnt = 0;sw_flag = 0;}}
void setup() {unsigned char i;for ( i = 0 ; i < 3 ; i++ ) {pinMode( LED_P[i] , OUTPUT );digitalWrite( LED_P[i] , LED_OFF );} // forpinMode( SW_P , INPUT_PULLUP );attachInterrupt( 0 , sw_isr , FALLING );MsTimer2::set( 100 , led_isr ); // 100msMsTimer2::start();}
void loop() {}