Bewegungsmelder AVR programmieren

OP #1517808
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?
#1517842
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 :)
OP #1517877
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.4schaltplan.gif

> 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:
1
#include<avr\io.h>
2

3
int main ()
4
{
5
int n;
6

7
DDRB=0b00000011; //Datenrichtungsregister mit Bit 0,1 als Ausgang
8
OCR0= 0x00;      //Vergleichsregister
9
PORTB= 0x00;     //Ausgang auf 0 initialisieren
10
  while (1){
11
   for(n=0; n<=4; n++){  //Spannung von 0-4V
12
   if(n==2){             //wenn U = 2 V
13
    OCRO = 0x00;        //PB0 --> Rote LED aus
14
    PORTB=0b00000010;   //PB1 --> grüne LED an
15
    }
16
   else{                
17
   OCR0=0xFF;           //PB0--> Rote LED an
18
   PORTB=0b00000000;    //PB1--> grüne LED aus
19
   }
20
   }}

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
Gast #1517949
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren