主なコンポーネント:
- Arduino uno
- LCDディスプレイ2x16
- コインレシーバーWei-Ya HI 07
- リレー
挑戦する
コインを受け入れる自動機を作成し、タイマーをオンにして、USB HUBに電力を出力します。
別のコードがすでにハブに接続されています。 概算値は、電源に応じて5V、1Aです。
建設業
ハブへの電源供給はリレーによって制御されます。
電源がネットワークに接続され、そのケーブルがリレーを通過します。リレーはArduinoボードを制御します(オン/オフ)。
コインアクセプターは、コインに関する信号を送信するためにArduinoに接続されており、12ボルトのブロックから電力が供給されます。
Arduinoをフラッシュする必要があります。これはコンピューターのUSBポートとArduinoコードエディターを介して行われます 。
ボタンを押すと充電が始まります。
スキームとコード
- 赤と青のワイヤ-電源、電源
- ボタン-充電を開始
- トリマー抵抗-ディスプレイの明るさ
- 2つのプルアップ抵抗+ -4.7 kOhm
- 薄緑色の線-ボタンの論理入力
- 黄色、紫色(12.11)-ディスプレイへの論理入力
- 白-コインの論理入力
- 紫(13)-リレー用(オン/オフ)
// WEI-YA HI-07 const int moneyPin3=3; const int button1Pin = 2; // 1 2 const int add5V = 10; const int ledPin = 13; // float sum=0.0; // int time; // int button1State; int moneyPin; int pulse1=0; unsigned long timeCount1=0; // WH1602 #include <LiquidCrystal.h> // LiquidCrystal lcd(12,11,7,6,5,4); byte p20[8] = { // B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000, }; byte p40[8] = { B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000, }; byte p60[8] = { B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100, }; byte p80[8] = { B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110, }; byte p100[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111, }; void setup() { Serial.begin(9600); // pinMode(button1Pin, INPUT); //, pinMode(ledPin, OUTPUT); //13, pinMode(moneyPin3,INPUT); //, pinMode(add5V,INPUT); //+5V pin attachInterrupt(1,count_pulse1,FALLING); Serial.println("Coin ready!"); lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,1); lcd.print("Coin ready!"); lcd.setCursor(0,0); lcd.print("Hello=)"); lcd.createChar(0, p20); // (j) lcd.createChar(1, p40); lcd.createChar(2, p60); lcd.createChar(3, p80); lcd.createChar(4, p100); } void loop() { moneyPin = digitalRead(moneyPin3);//C if (pulse1=0) // { lcd.clear(); lcd.setCursor(0,1); lcd.print("Coin ready!"); lcd.setCursor(0,0); lcd.print("Hello=)"); delay(200); } if (pulse1>0 && timeCount1<300) // { lcd.clear(); lcd.setCursor(0,0);lcd.print("Error:/"); lcd.setCursor(0,1);lcd.print("Fast pulse!"); delay(1100); pulse1=0; lcd.clear(); lcd.setCursor(0,0);lcd.print("Waiting!"); lcd.setCursor(0,1);lcd.print("Check the power!"); delay(1100); pulse1=0; } if(pulse1>0 && timeCount1>300) // { sum+=0.25; time=sum*4; lcd.clear(); lcd.setCursor(0,0);lcd.print(time); lcd.setCursor(4,0);lcd.print("minute"); // . lcd.setCursor(0,1);lcd.print("Total="); // . lcd.setCursor(6,1);lcd.print(sum); } button1State = digitalRead(button1Pin); // digitalWrite(add5V, HIGH ); // digitalWrite(ledPin, HIGH ); // if ((button1State == LOW) && (sum != 0))// 0 // { digitalWrite(ledPin, LOW); lcd.clear(); lcd.setCursor(0,0);lcd.print("Power ok!"); for (int i = 0; i<16; i++) // (16 ) { for (int j=0; j<5; j++) { lcd.setCursor(i, 1); // lcd.write(j); // delay(sum*3200); // = 64 ((0.25*3100/1000)*(16*5)) } } digitalWrite(ledPin, HIGH ); lcd.clear(); lcd.setCursor(0,0);lcd.print("Power off!"); sum=0; } // if (sum==20 || sum>20){ lcd.clear(); lcd.setCursor(0,0);lcd.print("It's too much!!!"); lcd.setCursor(0,1);lcd.print("Start Now!!!"); delay(1000); } if (sum<0){ lcd.clear(); lcd.setCursor(0,0);lcd.print("Error=("); sum=0.0; delay(1000); } } void count_pulse1(){ //detachInterrupt(0); detachInterrupt(1); pulse1++; if(pulse1==1) timeCount1=millis(); //attachInterrupt(0,count_pulse,FALLING); attachInterrupt(1,count_pulse1,FALLING); }
関数のセットアップとループ、元のドキュメントからの抽出
setup()関数は、スケッチの開始時に呼び出されます。 変数、ピンモードの初期化、ライブラリの使用開始などに使用します。 セットアップ機能は、Arduinoボードの電源投入またはリセットのたびに1回だけ実行されます。
初期値を初期化および設定するsetup()関数を作成した後、 loop()関数はその名前が示すとおりに正確に実行し、プログラムを変更して応答できるように連続的にループします。 Arduinoボードを積極的に制御するために使用します。
すべてのコードと回路のパフォーマンスがテストされました。
リストとスキームを見つけた形式で表示します。