Zeit zu messen ist eine einfache, aber wichtige Aufgabe, die wir in unserem täglichen Leben erledigen, ohne es zu merken. Ein Chirurg in der Chirurgie, ein Geschäftsmann, der versucht, an einer Besprechung teilzunehmen, ein Athlet, der gewinnen möchte, ein Student, der versucht, eine Prüfung oder ein Schachspiel zu beenden … Zur Zeitmessung werden intelligente Armbanduhren, Telefone und sogar professionelle Chronometer verwendet. Zeit ist eine Variable, die in elektronischen Systemen sehr genau genutzt werden sollte. Zum Beispiel eine Waschmaschine; Wie lange sich die Trommel im Uhrzeigersinn dreht, wie weit gegen den Uhrzeigersinn, wie viele Sekunden Wasser fließen muss, um das Waschmittel aufzulösen, werden durch Zeitmessung erledigt. Um Projekte zu entwickeln, bei denen Zeit von entscheidender Bedeutung ist, müssen Sie wissen, wie man sie nutzt.
In diesem Projekt erstellen Sie Ihr eigenes Zeitmessgerät mit PicoBricks, OLED-Display, Knopf und Potentiometer Module. Ein Timer…
Details und Algorithmus
Wenn Picobricks startet, platzieren wir eine Erklärung auf dem Bildschirm, die das Projekt vorstellt und Anweisungen enthält. Wenn der Benutzer das Potentiometer dreht, wird eine Zeit im Bereich von 0 bis 60 Minuten eingestellt. Wenn der Benutzer die Taste von Picobricks drückt, nachdem er die Zeit mit dem Potentiometer festgelegt hat, beginnt der Countdown in Minuten und Sekunden auf dem Bildschirm. Wenn die Taste gedrückt wird, während die Zeit rückwärts läuft, stoppt der Timer und zeigt die verbleibende Zeit auf dem Bildschirm an. Wenn der Minuten-, Sekunden- und Sekundenwert Null erreicht, ohne dass die Taste gedrückt wird, wird auf dem Bildschirm eine Meldung angezeigt, dass die Zeit abgelaufen ist, und das Programm wird gestoppt.
Komponenten
1X PicoBricks
Schaltplan
Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.
MicroBlocks-Codes der PicoBricks
Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf die Schaltfläche klicken:
Registerkarte „Mikroblöcke ausführen“.
MicroPython-Codes der PicoBricks
Vom Maschinenimport Pin, I2C, ADC, Timer #, um auf die Hardware-Picobricks zuzugreifen
aus der picobricks importSSD1306_I2C #oled-Bibliothek
utime #time-Bibliothek importieren
BREITE=128HÖHE=64
#Definieren Sie die Breiten- und Höhenwerte
sda=machine.Pin(4)
scl=machine.Pin(5)
#Wir definieren SDA- und SCL-Pins für die Kommunikation zwischen Pfaden
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)#Bestimmen Sie die Frequenzwerte
oled =SSD1306_I2C(128,64, i2c)
Pot =ADC(Pin(26))
Schaltfläche =Pin(10,Pin.IN,Pin.PULL_DOWN)
#bestimmen Sie unsere Eingangs- und Ausgangspins
oled.fill(0)
oled.show()
#Auf OLED anzeigen
time=Timer()
time2=Timer()
time3=Timer()
#Timer definieren
Def. Minute (Timer):
globaler setTimer
setTimer -=1
def Sekunde(Timer):
globale Sek
sec-=1if sec==-1:
Sek. = 59
def msekunde(timer):
globale ms
msec-=1wenn msec==-1:
ms=99
#Wir bestimmen die Inkremente der Minuten-Sekunden- und Millisekunden-Werte.
Sek. = 59
ms=99
globaler setTimer
while button.value()==0:
setTimer=int((pot.read_u16()*60)/65536)+1
oled.text("Timer einstellen:"+str(setTimer)+" min",0,12)
oled.show()
utime.sleep(0.1)
oled.fill(0)
oled.show()
#Bei nicht gedrückter Taste wird der vom Potentiometer ermittelte Wert angezeigt
wird auf dem OLED-Bildschirm gedruckt.
setTimer-=1
time.init(mode=Timer.PERIODIC,period=60000, callback=minute)
time2.init(mode=Timer.PERIODIC,period=1000, callback=second)
time3.init(mode=Timer.PERIODIC,period=10, callback=msecond)
#Wir ermitteln die Perioden Minuten, Sekunden und Millisekunden.
utime.sleep(0.2)#warte0,2 Sekunden
while button.value()==0:#burda hata var0>>>>1 olucak çalıştıramadığım için themedim.
oled.text("min:"+str(setTimer),50,10)
oled.text("sec:"+str(sec),50,20)
oled.text("ms:"+str(ms),50,30)
oled.show()
utime.sleep(0.01)
oled.fill(0)
oled.show()if(setTimer==0 und sec==0 und msec==99):
utime.sleep(0.1)
msec=0break;
#Wenn die Taste gedrückt wird, werden die Min-Sek-Ms-Werte gedruckt
in den ermittelten x- und y-Koordinaten auf den OLED-Bildschirm übertragen.
oled.text(str(setTimer),60,10)
oled.text(str(sec),60,20)
oled.text(str(ms),60,30)
oled.text("Die Zeit ist vorbei!",10,48)
oled.show()
#Drucken Sie die Werte für Minuten, Sekunden, Millisekunden und „Zeit ist ab“.
zu den auf dem OLED-Bildschirm ermittelten X- und Y-Koordinaten.
Arduino C-Codes der PicoBricks
#enthalten
#include „ACROBOTIC_SSD1306.h“
int Minute;
int Sekunde =59;
int Millisekunde =9;
int setTimer;voidsetup(){// Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen:pinMode(10,INPUT);pinMode(26,INPUT);
Wire.begin();
oled.init();
oled.clearDisplay();}voidloop(){// Fügen Sie hier Ihren Hauptcode ein, um ihn wiederholt auszuführen:
oled.setTextXY(1,2);
oled.putString("<>");
oled.setTextXY(3,1);
oled.putString("Bitte verwenden Sie");
oled.setTextXY(4,1);
oled.putString("Potentiometer");
oled.setTextXY(5,0);
oled.putString("zum Einstellen des Timers");delay(3000);
oled.clearDisplay();while(!(digitalRead(10)==1)){
setTimer =(analogRead(26)*60)/1023;
oled.setTextXY(3,1);
oled.putString("set to:");
oled.setTextXY(3,8);
oled.putString(String(setTimer));
oled.setTextXY(3,11);
oled.putString("min.");}
oled.clearDisplay();
oled.setTextXY(1,1);
oled.putString("Der Countdown");
oled.setTextXY(2,3);
oled.putString("hat begonnen!");while(!(digitalRead(10)==1)){
Millisekunde =9-(millis()%100)/10;
Sekunde =59-(millis()%60000)/1000;
Minute =(setTimer-1)-((millis()%360000)/60000);
oled.setTextXY(5,3);
oled.putString(String(minute));
oled.setTextXY(5,8);
oled.putString(String(second));
oled.setTextXY(5,13);
oled.putString(String(milisecond));
oled.setTextXY(5,6);
oled.putString(":");
oled.setTextXY(5,11);
oled.putString(":");}
oled.setTextXY(5,3);
oled.putString(String(minute));
oled.setTextXY(5,8);
oled.putString(String(second));
oled.setTextXY(5,13);
oled.putString(String(milisecond));
oled.setTextXY(5,6);
oled.putString(":");
oled.setTextXY(5,11);
oled.putString(":");delay(10000);if(minute==0& second==0& milisecond==0){
oled.setTextXY(5,3);
oled.putString(String(minute));
oled.setTextXY(5,8);
oled.putString(String(second));
oled.setTextXY(5,13);
oled.putString(String(milisecond));
oled.setTextXY(5,6);
oled.putString(":");
oled.setTextXY(5,11);
oled.putString(":");
oled.putString("-finished-");
oled.setTextXY(7,5);delay(10000);}}
GitHub-Projektseite