www.mikrocontroller.net

Forum: Compiler & IDEs Bewegungsmelder AVR programmieren


Autor: Katie M. (katie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
Ich muss das AVR-Programm für Bewegungsmelder mit Atmega32 schreiben.
Das geht darum, dass die LED bei Annäherung eines Menschen oder 
sonstigen Bewegungen ein Signal geben soll.Wenn man sich nicht 
bewegt(ohne Störung),bleibt die Lampe auf grün (bei Spannung von 2 V)und 
umgekehrt wird die Lampe dann Rot (bei Spannung von 0 - 4 V) und wird 
gespeichert und gezeigt wann die Lampe Rot war.
Kann mir jemand vielleicht helfen?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann mir jemand vielleicht helfen?

Dazu müßtest du erstmal eine konkrete Frage stellen.

Autor: Captain Subtext (captainsubtext)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Katie,

hast du bereits einen passenden Sensor für die Entfernungsmessung 
ausgewählt?
Hast Du bereits einen Schaltplan für deinen Bewegungsmelder gezeichnet?
Hast Du Vorkentnisse oder bist Du absolute Anfängerin?
Hast Du dir überlegt, woher du Uhrzeit/Datum bekommst?
Wobei genau sollen wir jetzt helfen?

Irgendwie klingt die Projektbeschreibung für mich so, als ob Du dich 
damit total verhoben hast! Oder eben Hausaufgaben :)

Autor: Katie M. (katie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Captain Subtext schrieb:
> hast du bereits einen passenden Sensor für die Entfernungsmessung
> ausgewählt?

Im Labor (in der Uni) wird ein Infrarotsensor und DuoLED verwendet.

> Hast Du bereits einen Schaltplan für deinen Bewegungsmelder gezeichnet?

Den Schaltplan haben wir gegeben. Siehe: 
http://www.rn-wissen.de/index.php/Bild:Rncontrol1....

> Hast Du Vorkentnisse oder bist Du absolute Anfängerin?

Es ist ein sehr neues Gebiet für mich ;)

> Hast Du dir überlegt, woher du Uhrzeit/Datum bekommst?

ich weiß es leider nicht.

> Wobei genau sollen wir jetzt helfen?

Was ich bislang geschrieben habe (und nicht mehr weiter komme) ist 
folgendes:
#include<avr\io.h>

int main ()
{
int n;

DDRB=0b00000011; //Datenrichtungsregister mit Bit 0,1 als Ausgang
OCR0= 0x00;      //Vergleichsregister
PORTB= 0x00;     //Ausgang auf 0 initialisieren
  while (1){
   for(n=0; n<=4; n++){  //Spannung von 0-4V
   if(n==2){             //wenn U = 2 V
    OCRO = 0x00;        //PB0 --> Rote LED aus
    PORTB=0b00000010;   //PB1 --> grüne LED an
    }
   else{                
   OCR0=0xFF;           //PB0--> Rote LED an
   PORTB=0b00000000;    //PB1--> grüne LED aus
   }
   }}
 

Mit dem Programm funktioniert es jedenfalls nicht ;-)
Kann mir vielleicht jemand sagen, welche weiteren Parameter ich in dem 
Quellcode berücksichtigen muss?
Ich hänge irgendwie etwas in der Luft...

Danke

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommst du auf die Idee, daß OCR0 die rote LED einschalten könnte? 
Die wirst du genau wie die grüne über PORTB ansteuern müssen.

> Mit dem Programm funktioniert es jedenfalls nicht ;-)

Etwas präziser wäre gut. Was war die Erwartung, was passiert 
stattdessen? So wie dein Programm jetzt ist, dürfte die grüne LED mit 
einer sehr hohen Frequenz (schneller als das Auge sehen kann) blinken, 
da die for-Schleife in wenigen Mikrosekunden komplett durchläuft.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.