SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 4
4 gasten
0 leden:
Forum > Digitaal > teller met PIC
[1] 2 »
electro_freakz
Lid
Berichten: 82
Gepost op zondag 17 Mei 2009 22:11:00 QuoteWijzig

hallo,
ik zit met een probleempje.
ik wil mijn batdetector en bliksemdetector aansluiten op een pic. oftewel, hoe vaak is de batdetector afgegaan, en hoe vaak de bliksemdetector.

nu moet dit op een LCD scherm komen, maar ik heb zelf geen idee hoe. op picbasic.nl heb ik gekeken hoe je een teller maakt enz. maar kom niet veel verder.


000
lightning

000
batdetector

(naast elkaar)

zoiets zou het dan moeten worden.
als 1 van de 2 portb. poorten aan de gnd is, moet er 1 bijkomen.

heeft er iemand een stukje code hoe ik dat kan doen?

vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
Stynus
Admin
Berichten: 2846
Gepost op zondag 17 Mei 2009 23:12:45 QuoteWijzig

Hier is wat code voor 1 zo een teller:

Code

dim lightning as word
dim lightbit as bit

main:
if portb.0 = 0  and lightbit  = 0then
inc lightning 
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif

print at 1,1, dec3 lightning 

goto main


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 11:10:26 QuoteWijzig


Quote
Stynus schreef:
Hier is wat code voor 1 zo een teller:

Code

dim lightning as word
dim lightbit as bit

main:
if portb.0 = 0  and lightbit  = 0then
inc lightning 
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif

print at 1,1, dec3 lightning 

goto main




hoe moet ik dit dan in mijn PIC zetten? aangezien er nog wat meer dingen bij moeten.


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 11:47:21 QuoteWijzig

Als er tegelijk dingen moeten gebeuren kan je best onder interrupt werken.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 17:14:59 QuoteWijzig


Quote
Stynus schreef:
Als er tegelijk dingen moeten gebeuren kan je best onder interrupt werken.



de bedoeling is dat er als portb.0 of portb.1 er een nummer bij komt op de teller

Code

'****************************************************************
'*  Name    : teller.BAS                                        *
'*  Author  : electro_freakz                                    *
'*  Notice  : Copyright (c) 2009 www.electrofreakz.tk           *
'*          : All Rights Reserved                               *
'*  Date    : 8-4-2009                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEVICE 16F628A                
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              

;Algemene constanten
SYMBOL Lengte       = 16      
SYMBOL Schaal       = 255
   
;Poortnamen
SYMBOL lightning     = PORTA.1
SYMBOL batdetector   = PORTA.0

dim lightning as word
dim lightbit as bit


dim batdetector as word
dim batbit as bit

;*****************************************************************

main:
if portb.0 = 0 and lightbit = 0then
inc lightning
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif

print at 1,1, dec3 "lightning"


if portb.0 = 0 and batbit = 0then
inc batdetector
batbit = 1
elseif portb.0 = 1
batbit= 0
endif

print at 1,5, dec3 "batdetector"


dit heb ik nu, maar er klopt nog niets van, zou je misschien dit even willen corrigeren?
goto main

goto main



vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
leip11
Lid
Berichten: 191
Gepost op maandag 18 Mei 2009 17:28:44 QuoteWijzig

werkt e display wel want die staat toch helemaal niet gedefineerd

timo

electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 18:01:54 QuoteWijzig

hmm, probleempje.
die 2 texten gaan nooit op mijn display passen. ik zou ze graag laten ''afwisselen'' hoe doe ik dat?
@stynus, zou jij mischien even een stukkie code willen maken?


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
Pyro-Brad
Lid
Berichten: 251
Gepost op maandag 18 Mei 2009 18:49:43 QuoteWijzig

Dat kan die zeker
Maar heb je niet nog wat beter op picbasic gekeken, want daar staat echt veel info. Allemaal lekker in het Nederlands dus dat moe je dan denk ik toch wel goed snappen.


nu nog het nubke van schematheek :p
Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 18:50:31 QuoteWijzig

Hoe heb je het lcd aangesloten?

En ik mis nog een "goto main" onder je code. En daar een "end" onder.

PS: zou je een link naar de SchemaTheek op je site kunnen plaatsen? Hier bij de links staat er ook 1 naar jouw site.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 19:06:44 QuoteWijzig

ik heb de LCD aangesloten op de ''picbasic'' manier.

Code

'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE

;Algemene constanten
SYMBOL Lengte = 16
SYMBOL Schaal = 255

;Poortnamen
SYMBOL s1 = PORTA.1
SYMBOL s2 = PORTA.0

DIM lightning AS WORD
DIM lightbit AS BIT

CLEAR
DELAYMS 500
CLS
;*****************************************************************

main:
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC s1
lightbit = 1
ELSEIF PORTB.0 = 1
lightbit= 0
ENDIF

PRINT AT 1,1, DEC3 "lightning"


IF PORTB.0 = 0 AND batbit = 0THEN
INC s2
batbit = 1
ELSE IF PORTB.0 = 1
batbit= 0
ENDIF

PRINT AT 1,5, DEC3 "batdetector"
GOTO main
END


ik krijg hier 2 errors:

Quote

THEN directive missing from ELSEIF command
misplaced of incorrect ENDIF also check its corresponding IF command



linkje neergezet


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
leip11
Lid
Berichten: 191
Gepost op maandag 18 Mei 2009 19:38:46 QuoteWijzig

maar als ik nu kijk heb je toch nog steeds niet gedefineerd waar je lcd zit??

timo

electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 19:43:29 QuoteWijzig

is ook niet nodig, dat gebeurt allemaal via het woordje PRINT


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
leip11
Lid
Berichten: 191
Gepost op maandag 18 Mei 2009 20:11:56 QuoteWijzig

o die wist ik nog niet.

timo

Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 20:31:05 QuoteWijzig

bij je tweede tel lusje staat "else if" dat moet "elseif" worden. Dus zonder spatie.

Verder gebeurd dat defini?ren idd automatisch als je de aansluitingen uit de help file gebruikt. Maar best zet je ze er zelf ook even bij.

Verder moet er een delay van een 300mS na die cls staan.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 20:52:33 QuoteWijzig

hier geeft ie een error:

Quote
ELSEIF PORTB.0 = 1



vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
reddevil
Lid
Berichten: 1265
Gepost op maandag 18 Mei 2009 21:10:50 QuoteWijzig

Probeer eerst eens je display aan het werkt te krijgen.
1 regel in je programma

Code

'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE

CLEAR
CLS
DELAYMS 500

print at 1,1,"test"
end


Werkt dit ja, dan kun je een stap verder gaan met je programma.


Veel te weinig tijd voor mijn projecten of heb ik er soms te veel?
Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 21:24:46 QuoteWijzig


Quote
electro_freakz schreef:
hier geeft ie een error:

Code
ELSEIF PORTB.0 = 1





Moet een then achter

Code
ELSEIF PORTB.0 = 1 then



Maar idd eens eerst testen of het lcd werkt zoals Reddevil al zei.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 21:38:56 QuoteWijzig

nu alle errors eruit zijn, is het meeste opgelost.
helaas komen er geen nummers bij, als ik op de schakelaars druk.


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 21:52:14 QuoteWijzig

Je inc stukjes kloppen nietmeer in de laatste code die je poste.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
electro_freakz
Lid
Berichten: 82
Gepost op maandag 18 Mei 2009 22:10:48 QuoteWijzig

dit is de code die ik nu gebruik

Code

'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE

;Algemene constanten
SYMBOL Lengte = 16
SYMBOL Schaal = 255

;Poortnamen
SYMBOL S1 = PORTA.1
SYMBOL S2 = PORTA.0

DIM lightning AS WORD
DIM lightbit AS BIT

DIM batdetector AS WORD
DIM batbit AS BIT

;*****************************************************************

main:
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ELSEIF PORTB.0 = 1 THEN
lightbit= 0
ENDIF

PRINT AT 1,1, DEC3 lightning


IF PORTB.0 = 0 AND batbit = 0 THEN
INC S2
batbit = 1
ELSEIF PORTB.0 = 1 THEN
batbit= 0
ENDIF

PRINT AT 1,5, DEC3 batdetector
GOTO main
END


ik krijg nu op het display: 534 en 086
wat betekend dat?
@stynus, bedankt dat je me wil blijven helpen, ik snap er echt niets meer van


vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk
Stynus
Admin
Berichten: 2846
Gepost op maandag 18 Mei 2009 22:19:21 QuoteWijzig

Ok, Dan is het misschien handiger dat ik de code even uitleg

Op deze manier maak je normaal een teller:

Code
IF PORTB.0 = 0 THEN
INC S1
ENDIF



Nu is het probleem met deze code dat een pic die code meerdere keren per seconde uitvoert en dus telkens 1 bijtelt. Daarom hebben we iets nodig dat ervoor zorgt dat de teller maar 1 keer bijtelt.

Dit gebeurd door bij het optellen een bit op 1 te zetten. Alleen als die bit 0 is mag er dus bijgeteld worden.
Dan krijgen we dit

Quote
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ENDIF



Nu moet die bit natuurlijk terug op 0 komen als de ingang terug hoog is.

Code
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ELSEIF PORTB.0 = 1 THEN
lightbit= 0
ENDIF



Probeer eens wat het doet als je gewoon dec doet ipv dec3 bij het printen naar het display.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
[1] 2 »

Active Topics

» Whirlpool kookplaat
» 24 volt motor vertrage...
» Show je mini projecten
» Purer 8.3se
» MULTIMETERS geven alle...
» Werkplaatsinrichting
» 2022
» De tuin.
» li-ion diepontlaadbev...
» Subaru Outback 2016

» Meer actieve topics

Advertenties

PCBway

© 2004-2022 SchemaTheek
Laadtijd: 0.46012 sec.