Dämmerungsschalter - Anfänger benötigt Hilfe

ollisat

Neues Mitglied
01. März 2011
13
0
0
Sprachen
Ich bin totaler Bascom - Anfänger und habe mich bereits erfolgreich durch die Anfängerprogramme geschlagen. Jetzt möchte ich einen Dämmerungsschalter bauen,
der nach Beginn der Dämmerung eine Led für zBsp. 60 min einschaltet, dann auf den nächsten Tag "wartet" um dann bei Dunkelheit von vorne zu beginnen.
Doch leider gelingt mir nur die erste Abfrage. Das heist, wenn es dunkel wird schaltet er die LED für die Zeit ein, danach auch wieder aus, aber das wars dann....

Hier mal mein Listig. Was mache ich falsch??

Code:
=============================================

$regfile = "attiny13.dat"
$crystal = 1200000

$hwstack = 32
$swstack = 4
$framesize = 4


Config Portb.2 = Input

Config Portb.0 = Output
Config Portb.1 = Output
Ledrot Alias Portb.0
Ledgelb Alias Portb.1
Ledgelb = 1
Dim Analogwandler As Word


Config Adc = Single , Prescaler = Auto , Reference = Avcc


Do
   Do

   Analogwandler = Getadc(1)

   Loop Until Analogwandler < 200
   Ledrot = 1
   Ledgelb = 0
   Wait 6
   Ledrot = 0
   Ledgelb = 1


   Do

   Loop Until Analogwandler > 300

   Waitms 50

Loop

End


===========================================================
Über jede Hilfe bin ich dankbar

ollisat
 
hallo!

versuche es mal mit diesem teilcode ;)
in deiner unteren do loop schleife wird die variable analogwandler nicht aktualisiert, da kann ja der wert garnicht über 300 kommen ;)


Do

Analogwandler = Getadc(1)

Loop Until Analogwandler > 300

Waitms 50

Loop

lg macgyver
 
Hallo,

ich hab mal den Thementitel etwas aussagekräftiger gemacht. Das man Hilfe benötigt ist ja irgendwie klar. So muß man wenigstens nicht erst jeden Thread aufrufen um zu wissen worum es da drin geht :p
War letztens im Bascom-Forum auch. Threadtitel: "HILFEEEEE !!!!!" ... sehr aussagekräftig :rolleyes:

Gruß
Dino
 
@macgyver,

danke für Deine Hilfe. Jetzt funktioniert es wie es soll. :) Und ich habe wieder etwas dazugelernt... Nun werde ich noch versuchen, das nicht jedesmal wenn zum Bsp. eine Wolke vorbeikommt,die Led leuchtet.


ollisat
 
Jetzt bin ich dabei, die LED während der Wartezeit blinken lassen zu wollen. Das Programm funktioniert während der Dunkelheit wie es soll:
Licht 1x für die eingestellte Zeit an, dann warten bis es Hell wird. Dabei blinkt die gelbe LED
sobald es Hell wird, blinkt die gelbe LED 2x und bleibt dann Dauerleuchtend an, obwohl sie weiterblinken sollte. Was mache ich falsch? Könnt Ihr bitte mal drüber schauen?
Hier das Listing:


============================================================
Code:
$regfile = "attiny13.dat"
$crystal = 1200000

$hwstack = 32
$swstack = 4
$framesize = 4


Config Portb.2 = Input

Config Portb.0 = Output
Config Portb.1 = Output
Ledrot Alias Portb.0
Ledgelb Alias Portb.1
Dim Analogwandler As Word

Ledgelb = 1
Wait 1
Ledgelb = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc


Do
   Do
   Start Adc
   Analogwandler = Getadc(1)
   Stop Adc
   Toggle Ledgelb
   Waitms 150
   Toggle Ledgelb
   Loop Until Analogwandler < 200
   Ledrot = 1
   Toggle Ledgelb
   Waitms 150
   Toggle Ledgelb
   Wait 6
   Ledrot = 0


   Do
   Start Adc
   Analogwandler = Getadc(1)
   Stop Adc
   Toggle Ledgelb
   Waitms 150
   Toggle Ledgelb
   Waitms 350
   Loop Until Analogwandler > 400
   Toggle Ledgelb
   Waitms 150
   Toggle Ledgelb
   Waitms 350

Loop

End

===========================================================
 
Hallo ollisat,

es könnte sein, dass Du das Blinken nicht siehst.
Füge mal ein Wait ein:
Code:
Do
   Do
   Start Adc
   Analogwandler = Getadc(1)
   Stop Adc
   Toggle Ledgelb
   Waitms 150
   Toggle Ledgelb
[FONT=Arial Black][COLOR="#00FF00"]Waitms 350[/COLOR][/FONT]
   Loop Until Analogwandler < 200
   Ledrot = 1


Schau Dir mal diesen Link an:http://www.reaktivlicht.de/kochbuch_V3.pdf
Viellicht ist das ja was für Dich.
Gruß Siggi
 
Hallo Ollisat!

Ich habe die ganze Zeit überlegt ob ich etwas zu deinem Programm schreibe, weil ich nicht genau weiß wozu es dienen soll?

Momentan gehe ich einfach mal davon aus, dass es nur etwas zum Spielen ist und du damit das Programmieren lernen möchtest.
Aus dem Grunde würde ich auch sagen, überleg dir doch noch mal eine andere Programmvariante.

Versuch dein Programm mal nach "Funktionen" zu gliedern.
Einmal die Erfassung des ADC,
dann die Auswertung des ADC-Wertes
und anschließend die Reaktion auf diesen Wert.

Bedenke nebenbei aber auch die Geschwindigkeit......
also wie oft muss der ADC-Wert wirklich ermittelt werden und was passiert in der Zwischenzeit?

Nur mal eine Frage zum Verständnis:
Hast du schon mal mit den Timern des AVR`s gearbeitet?


Grüße,
Cassio
 
@Siggi

Lieben Dank für Deine Antwort. Du hattest Recht, jetzt blinkt die LED munter vor sich hin. Danke :D

@Cassio

Ich bin totaler Anfänger in Sachen AVR: Fertige Programme auf einen AVR schieben und die nötige Hardware "basteln" kein Problem, aber selber Programmieren, da hört es zZT. auf.
Ich arbeite mich gerade durch div. Anfängerprogramme und probiere div. aus. Jetzt kam meine bessere Hälfte auf die Idee, das ich einen Bewässerungstimer basteln könnte, der einmal am Tag (nach Einbruch der Dunkelheit) ihre
Pflanzen giesst.
Das ganze muß folgendes können:
1x am Tag für ca. 60 Sek. eine Pumpe nach einsetzen der Dämmerung einschalten
Betiebsbereitschaft anzeigen (deshalb das Blinken)
Leider : Akku-Betrieb (deshalb wieder das Blinken)

Ich hab mich auch mit Watchdog ect. beschäftigt, aber da bin ich noch weit entfernt.


ollisat
 
Hi,

Ich bin totaler Anfänger in Sachen AVR: Fertige Programme auf einen AVR schieben und die nötige Hardware "basteln" kein Problem, aber selber Programmieren, da hört es zZT. auf.
Ich arbeite mich gerade durch div. Anfängerprogramme und probiere div. aus.
Wenn du elektronisch schon soweit fit bist, dann würde ich dir einfach mal nen Mega8 mit Character-LCD (2x16Chr im 4Bit-Mode) empfehlen. Das hat entscheidende Vorteile für dich. Du kannst die intern ablaufenden Vorgänge und Werte anzeigen lassen. Du siehst mehr und kannst dir besser vorstellen was intern abläuft.

Wenn du da sicherer geworden bist, kannst du das Programm minimalisieren und auf nen kleinen Tiny packen. Die Struktur der Atmels ist glücklicherweise recht vergleichbar.

Jetzt kam meine bessere Hälfte auf die Idee, das ich einen Bewässerungstimer basteln könnte, der einmal am Tag (nach Einbruch der Dunkelheit) ihre
Pflanzen giesst.
Das ganze muß folgendes können:
1x am Tag für ca. 60 Sek. eine Pumpe nach einsetzen der Dämmerung einschalten
Betiebsbereitschaft anzeigen (deshalb das Blinken)
Leider : Akku-Betrieb (deshalb wieder das Blinken)

Also das mit der Dunkelheit: nen LDR an nen ADC und gut ist. Würde aber sogar mit dem Komparator gehen.
Für das 1x am Tag und für 60sek benötigst du nen Timer und ein Quarz als Systemtakt damit das nicht total zeitlich danebenliegt.

Also mein Vorschlag: das ganze mit nem Mega8 und LCD entwickeln und dann wenn es fertig ist nur die benötigten Teile in den Tiny packen.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)