hjälp med basic stamp kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Christian
Inlägg: 86
Blev medlem: 3 november 2003, 22:54:49

hjälp med basic stamp kod

Inlägg av Christian »

Hej! Håller på med en automatisk toalettspolare.
Jag har en ir detektor som känner av pulser från en ir diod. Dessa ska detektera om en person sätter sig ner, och när personen reser sig upp ska ett servo trycka på spolknappen i en viss tid för sedan återgå till viloläge.

Hittils ser min kod ut såhär. Men servot vill inte som jag vill.. :( Så om nån har tid och lust att ta en titt så är det fritt fram =)

Kod: Markera allt

' {$STAMP BS2} ' Stamp directive.
' {$PBASIC 2.5} ' PBASIC directive.

' -----[ Variables ]----------------------------------------------------------

irDetectSitt VAR BIT
counter VAR WORD

' -----[ Main Routine ]-------------------------------------------------------

DO
FREQOUT 8, 1, 38500 ' Pulsa ut IR ljus från IR diod
irDetectSitt = IN9 '
IF (irDetectSitt = 0) THEN ' Någon sätter sig
GOSUB Flush_Toilet ' Gå till spolrutin
ELSE ' Ingen sitter
GOSUB Blink_Led ' Blinka led
ENDIF '
LOOP

' -----[ Subroutines ]--------------------------------------------------------
Flush_Toilet:
PAUSE 2000    ' Vänta och kolla om nån rest sig upp
IF (irDetectSitt = 1) THEN 'Någon reser sig upp
FOR counter = 1 TO 150   'Servo trycker på spolknappen
PULSOUT 4, 1000
PAUSE 20
NEXT
PAUSE 5000 'Servo ser till att tillräckligt mkt vatten spolar
FOR counter = 1 TO 150 'Servo tillbaka till viloläge
PULSOUT 4, 500
PAUSE 20
NEXT
ENDIF
RETURN   'Tillbaka till vänteläge

Blink_Led: ' Ingen sitter
HIGH 0
PAUSE 25
LOW 0
PAUSE 1500
RETURN
Användarvisningsbild
Glenn
Inlägg: 36780
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Inlägg av Glenn »

Hmm, är du säker på att det där är rätt värden ? om det hade varit PBP (eller PB, som ju ska vara kompatibelt till en viss gräns med BS) så hade det där varit helöt fel värden, mittenpositionen på ett servo är ju normalt 1.5ms, vilket ger 150 som du ska skicka till servot, ändlägena skiljer sej grovt mellan olika servon har jag märkt.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Inlägg av Walle »

använd [ code]-taggarna för källkod!! Då blir den inte så rörig och jävlig att läsa som den blir när man bara pejstar koden rakt in i meddelandet.
Christian
Inlägg: 86
Blev medlem: 3 november 2003, 22:54:49

Inlägg av Christian »

var skrev jag att jag vill till mittläget med servot? :) inte det som är problemet utan att programmet inte gör som jag vill =) servopulserna angivna i programmet är helt i sin ordning tom enligt ett kurskompendie för basic stamp där det står:
PULSOUT 14, 1000 sends a pulse to pin 14 that lasts 1000 × 2 µs. That’s 2000 µs or 2 ms.

Så det är fel nån annan stans i mitt program men kan inte komma på vart..
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Men du har ju inte beskrivit vad som egentligen är felet. Inte mer än att det inte gör som du vill. Vad är det den gör eller inte gör???

Sedan borde kanske denna tråden ligga under mikroprocessorer istället.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Fixade Walle's och vfr's önskningar. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> utan att programmet inte gör som jag vill...

Vad gör det då ?
H.O
Inlägg: 5919
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Inlägg av H.O »

Som andra redan sagt så hade det varit enklare om du berättat VAD den gör eller inte gör - inte bara att det inte fungerar.

Men jag tror jag ser åtminstånde ETT problem. Du "pulsar ut ljus" med kommandot FREQOUT men när du på nästa rad kollar om detektorn "ser" ljuset så "sänder" ju inte längre dioden ut något ljus. Hade det varit en ultraljuds sändare/mottagare så kanske det hade fungerat.

Alltså, FREQOUT genererar endast den frekvens du anger under den tid du anger sedan blir det "tyst" och programmet fortsätter på "nästa rad". Programmet fortsätter heller inte INNAN den tid du anger att frekvensen skall genereras har "gått ut", dvs den kan inte BÅDE "pulsa ut ljus" och detektera SAMTIDIGT.

Fixa en oscillator med en 555 istället som du sedan kan aktivera eller stänga av med ett enkelt HIGH/LOW kommande från STAMP'en. Det borde ge dig en större chans till frramgång.
Skriv svar