archive-nl.com » NL » P » PICBASIC.NL

Total: 182

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Bouw een nummermelder met PIC Basic
    gedrukt wordt echter langer dan 2 seconden gewacht dan valt de nummermelder weer terug in zijn originele stand Is echter een nieuw ontvangen nummer nog niet bekeken dan kan er niet gewist worden Het geheugen is weer helemaal leeg TEST mode is ook in te schakelen door bij het inschakelen van de spanning de toets ingedrukt te houden De LED gaat branden bij nieuw ontvangen nummer s en gaat pas uit als allen bekeken zijn Deze LED knippert eventjes snel als een zojuist ontvangen nummer al in het geheugen aanwezig is Bij een oproep of een druk op de toets wordt de backlight van de LCD voor 30 seconden aangezet Testmode Meteen na het programmeren van de PIC staat het programma in TEST mode Dit is te herkennen aan TEST rechtsonder in het LC Display In TEST mode werkt de schakeling normaal maar is de schakeling ook te testen Druk op een parallel aangesloten telefoon eerst op toets simuleert nieuw nummer dan binnen een seconde snel een nummer intoetsen en besluit met telefoontoets Wordt er geen gegeven dan doet de PIC het zelf na een seconde Time out TEST mode is ook in te schakelen door bij het inschakelen van de spanning de toets ingedrukt te houden Door de spanning een paar seconden van de schakeling te halen en opnieuw in te schakelen staat het programma niet meer in TEST mode De toetsen en werken dan niet meer De PIC zelf heeft geen kristal nodig hij loopt op de inwendige oscillator Tijd datum is een toekomstige uitbreiding Poorten A 6 en A 7 zijn hiervoor gereserveerd Als een HD44780 2x16 LC Display voorhanden is hoeft de schakeling niet veel te kosten Het werkt natuurlijk alleen als de telefoonmaatschappij KPN de nummers doorgeeft Deze nummermelder werkt volgens het DTMF protocol zoals

    Original URL path: http://www.picbasic.nl/nummermelder.htm (2016-02-17)
    Open archived version from archive


  • DCF77 klok met PIC
    maar drie nodig maar in een ander project wordt er gebruik gemaakt van de vierde ader om de buitentemperatuur te meten met een DS1820 sensor Er zijn twee uitgangen op de DCF77 module de ene is direct de andere geïnverteerd gebruik de aansluiting naast de De 4 e ader blauw wordt inmiddels gebruikt voor een DS1820 temperatuursensor meting buitentemperatuur Programma DCF77 is vrij simpel Elke seconde behalve seconde 59 komt er een pulsje binnen Voor een 0 duurt die puls 0 1 seconde en voor een 1 duurt het 0 2 seconden Om het begin van een nieuwe minuut te detecteren wordt er de 59 e seconde niets uitgezonden Het programma meet tussen de pulsjes door en als blijkt dat er één langer dan 1 seconde over doet geen puls uitgezonden dus dan is de aankomende puls de allereerste bit van een nieuwe bitserie Vanaf dan worden alle bitjes opnieuw ingevuld voor een nieuwe minuut Steeds als op de 59 e seconde geen signaalverandering wordt ondergaan DCF77 protocol zorgt het programma er zelf voor dat de 59 op het secondegedeelte van het LCD verschijnt zie DCF77 info Let op alles wordt in BCD uitgezonden De uren hebben een nulonderdrukking dat betekent dat bijv 8 uur s morgens niet als 08 00 00 maar als 8 00 00 wordt weergegeven Het programma maakt gebruik van de drie uitgezonden DCF77 pariteitbits zie DCF77 pariteit info Gong Een aardigheidje is een gong die elk half en heel uur klinkt Hiervoor is gebruik gemaakt van geluidsgenerator IC SAE800 van Siemens Dit IC is de opvolger van de oude SAB0600 Voor degene die nog een SAB0600 SAB0601 of SAB0602 thuis heeft liggen is er een speciaal schema en PIC programma alleen met 2x16 LCD Schema en programma met een SAB0600 SAB0601 of SAB0602 Op de hele uren klinkt een 3 tonige gong en op de halve uren een 2 tonige gong Om de gong te laten klinken wordt de SAE800 verbonden met PORTA 2 pin 1 en PORTA 3 pin 2 van de PIC Beide poorten geven elk heel uur een kort pulsje en PORTA 3 ook op de halve uren Natuurlijk kunnen deze pulsen ook voor wat anders dan een gong worden gebruikt Als het donker is wordt het volume van de gong automatisch zachter gezet voor de nachtrust van met name huisdieren Hóe zacht de gong klinkt is afhankelijk van R3 Als de LDR in de kamer bij de klok zelf wordt geplaatst zal de gong s avonds pas zachter gaan als de mensen naar bed gaan de schemerlampen worden uitgezet Als niet van deze automatische volumeregeling gebruik wordt gemaakt dan moet PORTA 7 met 5V worden verbonden en kunnen LDR P4 en R2 vervallen R3 moet 18k worden en PORTA 4 pin 3 open worden gelaten zie schema 2 Schema 2 Afregelen Door PORTB 1 pin 7 met GND te verbinden voordat er spanning op de schakeling wordt gezet kom je in testmode 1 en kan het LDR met P4 ingesteld worden

    Original URL path: http://www.picbasic.nl/dcf77_klok.htm (2016-02-17)
    Open archived version from archive

  • PIC programmeren met PIC Basic (2)
    LOW LED3 LED3 uitzetten WHILE S3 AAN Zolang S3 is ingedrukt WEND in dit lusje blijven wachten ENDIF Einde IF THEN blok van S3 WEND END Einde programma Om het verwarrende van schakelaar aan 0 en uit 1 uit de wereld te helpen geven we de constante 0 en de constante 1 eerst een naam dus SYMBOL AAN 0 en SYMBOL UIT 1 AAN is nu dus hetzelde als 0 en UIT heeft nu de waarde 1 Nu kun je gewoon schrijven voor als S1 aan is dan IF S1 AAN THEN wat dus hetzelfde is als IF PORTB 0 0 THEN alleen veel duidelijker nu Wat nu doet het bovenstaande programma De eerste IF THEN behandeld S1 Als S1 AAN is dan LED1 aanzetten en LED2 uitzetten anders ELSE dus als S1 niet aan is LED1 uitzetten De tweede IF THEN behandeld S2 Als S2 AAN is dan LED2 aanzetten LED2 moet je dus aanzetten met S2 en uitzetten met S1 De derde IF THEN behandeld S3 Als S3 AAN is dan LED3 aanzetten en na 0 5 seconde DELAYMS 500 automatisch weer uit WHILE S3 AAN WEND is een leeg WHILE WEND lusje Deze wacht zolang S3 blijft ingedrukt Als dit lusje er niet stond dan zal nadat de DELAYMS tijd is afgelopen de LED meteen weer aan gaan als de schakelaar wordt vastgehouden nu moet de schakelaar eerst losgelaten worden voordat het programma verder gaat Nog even over ENDIF Als je met een IF THEN maar 1 opdracht uit wilt voeren dan kun je dat meteen achter IF THEN zetten zoals hierboven met S2 is gedaan Wil je meer dan 1 opdracht met IF THEN uitvoeren dan moet je de opdrachten onder IF THEN zetten zoals hierboven met S1 en S3 is gedaan Om nu de PIC Basic compiler te laten weten waar het blok eindigt moet na de laatste opdracht van dat IF THEN blok worden afgesloten met ENDIF Een waarheidstabel programmeren met AND OR en XOR Stel dat onderstaand waarheidstabel in de PIC geprogrammeerd moet worden EN A B UITGANGEN S1 S2 S3 LED1 LED2 LED3 L L L H L H L H L H H L L L H H H L L H H L L L H X X L L L L L aag als schakelaar is gesloten X Don t care Maakt niet uit of schakelaar aan of uit is resultaat blijft hetzelfde De waarheidstabel geeft het volgende aan Een uitgang kan alleen H oog worden als de ENable schakelaar S1 aan is L aag is Uitgang LED1 is alleen H oog als schakelaar A S2 en of schakelaar B S3 aan is L aag is Uitgang LED2 is alleen H oog als schakelaar A S2 of schakelaar B S3 aan is L aag is Uitgang LED3 is alleen H oog als schakelaar A S2 en schakelaar B S3 aan zijn L aag zijn Wijzig het programma in het volgende DEVICE 16F628A Gebruik een 16F628A type CONFIG INTRC OSC NOCLKOUT WDT OFF PWRTE ON LVP OFF MCLRE OFF ALL DIGITAL TRUE Alle ingangen digitaal SYMBOL AAN 0 Schakelaar aan laag 0 SYMBOL UIT 1 Schakelaar uit hoog 1 SYMBOL LED1 PORTA 0 Poort A 0 heeft nu de naam LED1 SYMBOL LED2 PORTA 1 Poort A 1 heeft nu de naam LED2 SYMBOL LED3 PORTA 2 Poort A 2 heeft nu de naam LED3 SYMBOL S1 PORTB 0 Poort B 0 heeft nu de naam S1 SYMBOL S2 PORTB 1 Poort B 1 heeft nu de naam S2 SYMBOL S3 PORTB 2 Poort B 2 heeft nu de naam S3 PORTB PULLUPS ON On chip pull up weerstanden actief CLEAR Wis alle RAM geheugen Hoofdprogramma WHILE 1 1 Oneindige lus IF S1 AAN THEN Als S1 aan is dan IF S2 AAN OR S3 AAN THEN Als S2 en of S3 aan is dan HIGH LED1 LED1 aan ELSE anders LOW LED1 LED1 uit ENDIF Einde IF THEN ELSE blok met OR IF S2 AAN XOR S3 AAN THEN Als S2 of S3 niet beide aan is HIGH LED2 LED2 aan ELSE anders LOW LED2 LED2 uit ENDIF Einde IF THEN ELSE blok met XOR IF S2 AAN AND S3 AAN THEN Als S2 en S3 aan zijn dan HIGH LED3 LED3 aan ELSE anders LOW LED3 LED3 uit ENDIF Einde IF THEN ELSE blok met AND ELSE anders LOW LED1 LED1 uitzetten LOW LED2 LED2 uitzetten LOW LED3 LED3 uitzetten ENDIF Einde IF THEN ELSE blok van S1 WEND END Einde programma Als je goed kijkt zie je dat zowat de hele waarheidstabel met IF s alleen wordt uitgevoerd als schakelaar S1 AAN is want anders ELSE zet hij alle 3 LED s uit en dan maakt het niet uit in welke stand S2 en S3 staan Om LED s te laten branden moet S1 dus sowieso aan staan Stel dat S1 aan is dan gaat hij dat IF THEN blok binnen Daar staat meteen weer een IF THEN blok die gaat hij alleen uitvoeren als minimaal 1 van de 2 schakelaars S2 en of S3 AAN is beide mogen dus ook AAN staan Dat geldt niet voor het tweede IF THEN blok daar staat XOR dat betekent e x clusief of dus of alleen S2 of alleen S3 maar S2 en S3 mogen niet tegelijk aan zijn dan gaat LED2 weer uit En bij het derde IF THEN blok moeten juist S2 en AND S3 aan zijn om LED3 te laten branden Is niet aan die voorwaarde voldaan dan zet hij LED3 uit via ELSE Nesten Je kunt dus een IF THEN in een andere IF THEN zetten dat kun je nog veel vaker doen dat heet nesten Dat nesten kan ook met WHILE WEND en REPEAT UNTIL je kunt dus een WHILE WEND lus in een andere WHILE WEND lus plaatsen Nogmaals overzicht is belangrijk Het wordt al duidelijk waarom het programma gedeelte in een blok 2 spaties moet inspringen of dat nu een IF THEN

    Original URL path: http://www.picbasic.nl/beginners2.htm (2016-02-17)
    Open archived version from archive

  • Electrisch klapraam
    In de metalen stang wordt haaks op het Ø6mm gat voor de motor as een gat geboord met M4 of M5 draad er in getapt De bout die daar in wordt gedraaid wordt op het platte vlak van de as gedraaid om te voorkomen dat de motor as gaat slippen in het gat van de metalen stang Ik heb hier ook nog een knijpverbinding gemaakt door een zaagsnede in de stang te zagen en zodoende met een tweede bout de motor as vast te knijpen maar dit is niet per se nodig De twee scharnierpunten worden elk gemaakt van een M4 of M5 bout en 2 moeren De bout en moer worden niet strak aangedraaid maar met iets speling zodat de stang kan scharnieren Een tweede contra moer wordt nu tegen de eerste tegen elkaar in vast gedraaid Door tussen de moeren een veerring te plaatsen loopt het niet meer los Raam gesloten Raam gaat open Raam is bijna open Raam geopend binnen 3 seconden Er wordt geen gebruik gemaakt van eindschakelaars de PIC besturing detecteert met behulp van een stroomdetector of de RB35 motor het eindpunt heeft bereikt Als er na twee seconden een stroompiek wordt gedetecteerd raam helemaal

    Original URL path: http://www.picbasic.nl/raamopener.htm (2016-02-17)
    Open archived version from archive

  • De werking van het DCF77 tijd signaal
    projecten De onafgeschermde kabel tussen de DCF77 module en de PIC is bij mij thuis 10 meter lang en werkt probleemloos Neem als het mogelijk is een 4 aderig kabel voor de DCF77 module zijn er maar 3 nodig maar in een ander project wordt er gebruik gemaakt van de vierde ader Er zijn twee uitgangen op de DCF77 module de rechter is direct de linker geïnverteerd De projecten van deze website gebruiken de directe uitgang aansluiting links naast de De vierde blauwe ader wordt in een ander project gebruikt PIC programma DCF77 is vrij simpel Elke seconde behalve seconde 59 komt er een pulsje binnen Voor een 0 duurt die puls 0 1 seconde en voor een 1 duurt het 0 2 seconden Dus Meet tot er een puls binnenkomt Dan een vertraging van 0 15 seconde Dan weer meten Is de puls alweer weg dan is er een 0 ontvangen en is de puls er nog dan is het een 1 Het programma in de PIC verwacht elke seconde een 0 of een 1 als er dus na een seconde niets is ontvangen weet de PIC dat de aankomende seconde seconde 00 van een nieuwe minuut moet zijn De waarde van de seconde zelf wordt niet uitgezonden om een tijdsaanduiding met seconden te maken moet er in het PIC programma een teller meelopen die bij elke ontvangst van een bit ook de seconden teller verhoogt en deze op een tijdsaanduiding LCD of LED display weergeven en als er een seconde niets wordt ontvangen seconde 59 moet ervoor worden gezorgd dat er één seconde na de 58 e seconde 59 op de tijdsaanduiding wordt gezet Bovendien moet met de daaropvolgende seconde de seconden teller weer op 00 worden gezet Alle waarden worden sinds 1973 uitgezonden in BCD code meer info over BCD Pariteitbits Een programma kan gebruik maken van de drie uitgezonden DCF77 pariteitbits dit is niet per se nodig maar is wel aan te bevelen de programma s van deze website maken er in ieder geval gebruik van Er is een pariteitbit voor de minuten voor de uren en voor de datum DCF77 werkt met even parity dat werkt als volgt De uren bijvoorbeeld bestaan uit 6 bits plus een pariteitbit zie bitindeling in de minuut onderaan De bitjes die 1 zijn worden opgeteld inclusief de pariteitbit de uitkomst moet een even getal zijn Als er dus een bit verkeerd is ontvangen een 0 is als 1 of een 1 als 0 ontvangen dan is de uitkomst oneven Stel dat het 8 uur s morgens is de 6 bit uren bittrein is dan 00 1000 08 BCD Omdat er dan maar 1 bit hoog is is de pariteitbit van de uren die daar direct achter wordt uitgezonden ook een 1 om tot een even getal te komen Als de uitkomst nu oneven is pariteitserror moet de PIC ervoor zorgen dat de fout ontvangen tijd of datum niet op het LCD wordt geplaatst In plaats daarvan moet de PIC

    Original URL path: http://www.picbasic.nl/info_dcf77.htm (2016-02-17)
    Open archived version from archive

  • Hexadecimaal en BCD
    daar vrij snel de hexadecimale waarde uithalen Namelijk 0011 3 en 0100 4 Dus de hexadecimale waarde van 00110100 34 Een paar voorbeelden 0011 0011 33 0100 0111 47 1111 1000 F8 Alleen de waarden A t m E zul je aan moeten wennen de F is alle bits aan dus dat is makkelijk te onthouden Om uit een binair getal een decimaal getal te halen valt niet zomaar in één oogopslag te zien omdat er geen enkel logisch verband tussen die getallen zit Uit 4 bits zijn 16 mogelijkheden van enen en nullen te maken 0000 0 0001 1 0010 2 1111 15 zie de tabel onderaan Wat is BCD B inary C oded D ecimal is een vierbits code om de decimale cijfers 0 t m 9 weer te geven grondtal 10 BCD telt gewoon zoals we dagelijks tellen in decimalen alleen wordt dit nu binair weergegeven Het getal 31 bijvoorbeeld is binair 00011111 maar in BCD 0011 0001 de 3 staat hier links de 1 rechts zie de tabel onderaan Omzetten van BCD naar decimaal in PIC Basic kan als volgt MyByte MyBCD 4 10 MyBCD 15 Of als het dezelfde variabele moet blijven die alleen maar omgezet moet worden MyByte MyByte 4 10 MyByte 15 Omzetten van decimaal naar BCD in PIC Basic kan als volgt MyBCD MyByte 10 4 MyByte 10 Of als het dezelfde variabele moet blijven die alleen maar omgezet moet worden MyByte MyByte 10 4 MyByte 10 Decimaal Hex Binair BCD 0 00 00000000 0000 0000 1 01 00000001 0000 0001 2 02 00000010 0000 0010 3 03 00000011 0000 0011 4 04 00000100 0000 0100 5 05 00000101 0000 0101 6 06 00000110 0000 0110 7 07 00000111 0000 0111 8 08 00001000 0000 1000 9 09 00001001 0000 1001 10

    Original URL path: http://www.picbasic.nl/info_bcd.htm (2016-02-17)
    Open archived version from archive

  • Bouw je eigen RC5 afstandsbediening
    hier en hier verzend Onderstaande TRANSMIT HEX bestand is dan ook alleen een voorbeeld die maar 5 knoppen bevat om een TV te bedienen namelijk Stand by Programma en Volume en Aan de hand van het te downloaden PIC Basic voorbeeld is het daarna naar eigen wensen uit te breiden Als er meer knoppen nodig zijn dan er ingangen vrij zijn zul je zelf een routine moeten schrijven die de

    Original URL path: http://www.picbasic.nl/rc5_remote.htm (2016-02-17)
    Open archived version from archive

  • PIC Basic projecten en printplaten etsen
    Op deze pagina worden frames gebruikt maar uw browser ondersteunt geen frames This page uses frames but your browser doesn t support frames

    Original URL path: http://www.picbasic.nl/frameload.htm? (2016-02-17)
    Open archived version from archive



  •