War mit klar, dass Du wieder mal ein professionelles Programm schnell aus dem Ärmel geschüttelt hast. Ich dagegen bin mal wieder die dollsten Umwege gefahren. Aber Dein Programm ist einfach super. Danke für die schnelle Antwort.
Hier ist mein verkorkstes Programm:
'Zeitschalter
main: pause 900 inc b0 if b0 = 60 then inc b1 b0 = 0
if b1 = 60 then inc b2 b1 = 0
if b2 = 12 then high 1 wait 60 low 1 high 1 wait 60 low 1 b2 = 0 endif endif endif
Thema von harry02 im Forum Projekte von User für...
Hallo Gemeinde, für mein Tomatengewächshaus habe ich mir für die Bewässerung eine kleine elektonische Schaltung aufgebaut, die natürlich mit einer Picaxe 08m2 gesteuert wird. Im Urlaub soll nämlich 2 Mal am Tag eine kleine Pumpe für jeweils 5 Minuten eingeschaltet werden. Das heißt, alle 12 Stunden, soll die Pumpe für 5 Minuten laufen. Nun meine Frage: welche Befehle nehme ich dafür am sinnvollsten, um die Zeiten zu steuern, a) for - next mit Variablen, b) on - goto c) do - loop d) oder kann man auch "time" dafür einsetzen ? Es führen ja bekanntlich viele Wege zum Ziel. Ich bin mir aber nicht sicher, wie genau man die Zeiten mit den oben genannten Möglichkeiten steuern kann.
Für uns Bastelrentner ist die Picaxe genau das Richtige. Leichte Programmiersprache, wenig drum herum und vielseitig anwendbar. Wer halt unbedingt schnelle und kompliziertere Anwendungen braucht, muss wohl oder übel auf Arduino oder Atmel umsteigen und sich mit der etwas schwierigeren Programmiersprache dieser MIC's auseinander setzen. Nur schade, dass auf der hier von BBm betriebenen hervorragenden und hilfreichen Plattform kaum jemand Interesse zeigt. Aber auf Handy's glotzen und nichts dabei denken, ist wohl einfacher. Gruß Harry
Euch allen noch eine schöne restliche Weihnachtszeit und ein ideenreiches gesundes neues Jahr.
Das ist ja interessant, dass ein Atmel mit 100% Befehlsatz der Picaxe arbeitet. Ich wollte schon lange mal auch einen Atmel zum Laufen bringen. Aber - wie schließe ich den am PC an - wie lässt er sich programmieren - braucht man dazu wieder ein besonderes Programmiertool
Hab da schon einiges ausprobiert und kam zu keinem Ergebnis. Zum Beispiel ein Programmier-Board von Pollin, und noch eines von Conrad. Aber nichts ging. Wäre toll, wenn jemand so eine kleine Schritt für Schritt-Anweisung parat hätte.
Das Programm hatte ich wie folgt interpretiert, und dachte, ich läge richtig:
main: 'Programmbeginn pause 200 'ok, diese Pause könnte entfallen. readadc c.1,b0 ' hier wird der Wert des LDR abgelesen und in "b0" eingelesen
do 'beginn der Do - Loop - Schleife b1 = b0 'der Wert von "b0" wird in "b1" kopiert. "b1" hat dann einen festen Wert readadc c.1,b0 'nun wird erneut der Wert des LDR gelesen und in "b0" eingelesen pause 200 'diese Pause könnte vielleicht auch entfallen if b0<>b1 then 'und jetzt kommt der eigentliche Prüf- (Eich-) Vorgang. Hat sich "b0" gegenüber "b1" geändert, also "nicht gleich", dann soll nach Alarm gesprungen werden goto alarm endif pause 1000 loop
goto main
alarm: high 4 pause 1000 low 4 goto main
Ich hoffe, dass ich mich verständlich ausgedrückt habe. Grüße Harry
Thema von harry02 im Forum Projekte von User für...
Mit folgendem kleinen Projekt habe ich einen Bewegungsmelder gebaut, der mir auf ca. 10 Meter anzeigt, ob sich ein Objekt verändert. In meinem Fall ist es eine Haustür am gegenüberliegenden Haus. Sobald die Tür geöffnet wird, schaltet die Picaxe einen Ausgang auf high.
Die Schaltung:
[[File:Bewegungsmelder_Picaxe.JPG|none|auto]]
Das Programm hierzu:
main: pause 200 readadc c.1,b0
do b1 = b0 readadc c.1,b0 pause 200 if b0<>b1 then goto alarm endif pause 1000 loop
goto main
alarm: high 4 pause 1000 low 4 goto main
Das Programm ist in der Lage, den LDR jedesmal zu eichen und die Werte in den Variablen b0 und b1 zu vergleichen. Wie das Programm im einzelnen funktioniert, konnte ich am Simulator nicht nachvollziehen. Aber es funktioniert.
Was das Experimentierboard betrifft, habe ich mir selber eines zusammen gebastelt. Und gleich in einem portablen Koffer unter gebracht. BBM wird sich jetzt sicher kaputt lachen, wenn er das sieht. Aber mir hat es so nach und nach Freude gemacht, wenn ich immer wieder weitere Komponenten mit eingebaut habe. Ich kann damit sämtliche Picaxe-Versionen programmieren, und auf den Steckplatinen verschiedene Schaltungen ausprobieren. Eine optische Anzeige der Ausgänge ist oben vorhanden, auch Töne sind mit dem LM386-Verstärker hörbar, sogar eine LCD-Anzeige ist vorhanden. Ein kleiner dreistelliger Zähler, um Impulse zu sehen, ist auch vorhanden.
Ja schon, aber nicht, wenn man das Nachbarhaus, oder ein anderes entfentes Ziel überwachen will. Oder auch Fahrzeuge zählen will, die vor der Straße vorbei fahren.
keine schlechte Idee. Es gibt ja genug Möglichkeiten, mit der Picaxe kreativ zu sein. Bin schon am "Hirnen", was mein nächstes Projekt wird. Hab da so ne Vorstellung, wie man etwas überwachen kann, sobald eine Veränderung eintritt. Also ich habe z. B. 2 Röhrchen, in denen jeweils ein kleiner Fotowiderstand, oder Fotodiode steckt. Nun richte ich die Röhrchen auf das zu überwachende Objekt, z. B. ein Fenster oder eine Tür. Sobald sich dann etwas ändert, Fenster geht auf, Tür geht auf, soll ein Alarm erklingen. Ich bin mir nur noch nicht im Klaren, wie man eine konstante Referenz erzeugt. Vielleicht mit einem Spannungsteiler. Ist momentan nur so eine Idee. Vielleicht wird ja was draus.
Hallo BBM, sicher gibt es im Netz alles und auch viele Melodieen. Aber ich wolte halt eine, die jedes mal anders klingt. Und bis jetzt singt mir mein Programm jedes Mal eine ander Melodie vor. Ich kann es kaum erwarten, bis mein Windrad die 100 Umdrehungen gemacht hat, und mir dann etwas Neues vorsingt. Ist halt meine Art, Freude mit der Picaxe zu haben. Zumal ich immer noch Programmieranfänger bin und jedes Mal, wenn ein Programm klappt, ein bisschen Stolz verspüre. Ohne Deine Hilfe in früheren Beiträgen, wäre ich nie soweit gekommen. Gruß Harry
will mich auch mal wieder melden. Nachdem mein Melodienspieler etwas langweilig geworden ist, weil er immer die gleiche Melodie abspielte, habe ich mir überlegt, wie man eine Melodie erzeugen kann, die quasi per Zufall entsteht. So habe ich den Befehl "Random" benutzt. Sicherlich gibt es eine einfachere Möglichkeit so etwas zu programmieren. Aber es funktioniert.
Grüße Harry
Hier das Programm:
'Zufallsmelodie
#picaxe 08m2 main:
count c.3,1000,b0 debug w1 = w1 + b0 if w1 >= 99 then goto Melodie endif goto main
Melodie:
let w0=time random w0
w0 = w0 b3 = b0//10+1
random b0 b4 = b0//10+1
random b0 b5 = b0//10+1
random b0 b6 = b0//10+1
random b0 b7 = b0//10+1
random b0 b8 = b0//10+1
random b0 b9 = b0//10+1
random b0 b10 = b0//10+1
random b0 b11 = b0//10+1
random b0 b12 = b0//10+1
random b0 b13 = b0//10+1
random b0 b14 = b0//10+1
tune 0,3,(b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) w0=0 w1=0 goto main
Hallo BBM, ich verstehe das alles nicht so ganz. Dein Programm funktioniert im Simulator einwandfrei. Wenn ich dieses Programm dann in meinen Melodienspieler einlese, wird permanent Piep1 ausgeführt. Ich kann mir einfach nicht erklären, wo der Fehler liegt. Gruß Harry
das Windrad ist ein horizontales 3-Löffelrad. An seinem Schaft habe ich einen Magneten befestigt, der bei jeder Umdrehung ein Reed-Relay aktiviert. Das Schließen des Reed-Kontakts bewirkt einen kurzen Impuls, der mit einem 555 als Monoflop auf ca. 10 mSek aufbereitet wird. Dieser Impuls gelangt dann auf einen 433 Mhz Sender und wird ca. 30 Meter weit in mein Bastelzimmer übertragen. Dort wird er von einem 433 Mhz Empfänger empfangen und auf einen Impulszähler gegeben. Der gleiche Impuls gelangt dann auch noch auf die 08m2 PinC.3. Gruß Harry
Thema von harry02 im Forum Projekte von User für...
Da momentan in diesem Forum wenig los ist, möchte ich ein kleines Programm einstellen. Der Sinn ist zwar nicht gerade bedeutsam, aber vielleicht kann es einer brauchen. Mein von einem Windrad gefütterten Impulszähler soll nach 100 Impulsen und nach 1000 Impulsen jeweils eine kleine Melodie abspielen.
Hier das Programm:
‚Impulszähler-Melodienspieler
#picaxe08m2
main: count c.3,1000,b0 w1 = w1 + b0 if w1 >= 99 then w2 = w2 + w1 goto piep1 endif goto main
piep1: w1 = 0 tune 0,3,($10,$11,$12,$13,$14,$15) if w2 >= 999 then goto piep2 endif goto main
piep2: w2 = 0 tune 0,3,($15,$14,$13,$12,$11,$10,$05,$05) goto main
Thema von harry02 im Forum Projekte von User für...
Hallo zusammen,
Noch einmal will ich nerven mit einem Rechteckgenerator.
Da ich noch ein bisschen Zeug in meiner Bastelkiste rumliegen habe, wie zum Beispiel einen Stufenschalter, ist mir wieder eine Idee gekommen, wie man mit der Picaxe und dem Stufenschalter etwas bauen kann. Wenn es auch nichts Sinnvolles ist, aber es macht Spaß, wenn es hinterher funktioniert.
Die Funktion:
Je nach Stellung des Stufenschalters erhalte ich am Ausgang der Picaxe eine zuvor definierte Frequenz. In meiem Fall sind es die Frequenzen von 100 Herz bis 25 Khz. Leider nur Stufenweise. Eigentlich wollte ich noch eine Routine einfügen, damit man die Frequenzen etwas variabel gestalten kann, ist mir aber programmtechnisch nicht gelungen. Für die Widerstände am Stufenschalter habe ich 470 Ohm / 1 % genommen. Die mit dem PWMOU-Wizard ermittelten Werte habe ich mit plus minus 5 in Case übernommen. Damit werden eventeulle Streuungen ausgeglichen. Mit der Taste an pinc.1 kann das Programm gestartet, bzw. auch aus den Frequenzroutinen ausgestigen werden.
Hier das Programm:
'Festfrequenzen mit Drehschalter #Picaxe 08m2
main: pause 500 pwmout c.2, 0, 0 do loop until pinc.1 = 1
readadc 4, b0
debug b0
select case b0 case 20,21,22,23,24,25,26,27,28,29,30 goto hz100
case 46,47,48,49,50,51,52,53,54,55,56 goto hz1khz
case 72,73,74,75,76,77,78,79,80,81,82 goto hz2khz
case 97,98,99,100,101,102,103,104,105,106,107 goto hz3Khz
case 122,123,124,125,126,127,128,129,130,131,132 goto hz5Khz
case 149,150,151,152,153,154,155,156,157,158,159 goto hz10Khz
case 175,176,177,178,179,180,181,182,183,184,185 goto hz15Khz
case 200,201,202,203,204,205,206,207,208,209,210 goto hz20Khz
case 226,227,228,229,230,231,232,233,234,235,236 goto hz25Khz
hz100: pause 500 pwmout pwmdiv64, C.2, 155, 311 do loop until pinc.1 = 1 goto main
hz1Khz: pause 500 pwmout pwmdiv4, C.2, 249, 499 do loop until pinc.1 = 1 goto main
hz2Khz: pause 500 pwmout pwmdiv4, C.2, 124, 249 do loop until pinc.1 = 1 goto main
hz3Khz: pause 500 pwmout pwmdiv4, C.2, 82, 165 do loop until pinc.1 = 1 goto main
hz5Khz: pause 500 pwmout C.2, 199, 399 do loop until pinc.1 = 1 goto main
hz10Khz: pause 500 pwmout C.2, 99, 199 do loop until pinc.1 = 1 goto main
hz15Khz: pause 500 pwmout C.2, 66, 133 do loop until pinc.1 = 1 goto main
hz20Khz: pause 500 pwmout C.2, 49, 99 do loop until pinc.1 = 1 goto main
hz25Khz: pause 500 pwmout C.2, 39, 79 do loop until pinc.1 = 1 endselect goto main
Und hier die Schaltung: [[File:Freq_Schalter_Picaxe.JPG|none|auto]]