Bascom voor Arduino

Waarde Forumleden,

Binnen dit forum is wel duidelijk geworden hoe het moet, dus dat hoef ik niet te vertellen.
De voorbeeldprogramma’s zijn in de taal C geschreven.
Bascom programma's zijn eenvoudiger, makkelijker, simpeler en daardoor begrijpelijker.
Probeer het eens, en geef je mening.

BASCOM (voor uno)
Het is mijn bedoeling om Arduino met Bascom te programmeren. Bascom is een basic dialect.
Downloaden van www.mcselec.com. kies voor Bascom AVR (ik heb verzie 2.0.7.1).
Na installeren, selecteer je via: options > compiler > chip = m328pdef.dat
Dit is het hart van Arduino. Via dit menu kan je diverse zaken instellen, daarover later meer.
Het selecteren van de juiste chip is belangrijk. Ook de kristalfrequentie moet worden ingesteld.
Dit doe je via: options > compiler > communication > frequency = 16000000 Hz
Dit is belangrijk omdat alle timer en communicatie snelheiden door het kristal wordt bepaald.
Direct uploaden naar Arduino gaat (nog) niet. Daarvoor zijn er wat hulpprogramma’s nodig.

WINAVR
Downloaden van: WinAVR download | SourceForge.net
Na downloaden moet je dit installeren en je hebt er verder geen omkijken meer naar.
Dit met grote dank aan Abraham Vreugdenhil uit het Westland, die mij hierop attendeerde.

XLOADER
Hiermee upload je het HEX bestand in de Arduino.
(Een HEX bestand is het programmabestand voor de Arduino.)
Downloaden van: http://xloader.russemotto.com/ daar staat dan xloader.zip v1.00 678kb.
Start Xloader en zet de communicatie op 115100 bps
Kies het device Uno(Atmega328)
Xloader heeft een beperking, je kan geen com-poort hoger dan 9 kiezen.
Mocht het zo zijn dat de Uno een hogere poort heeft toegewezen gekregen, dan moet je dat wijzigen.
Het is nu een kwestie van hex-bestand kiezen, dit hex bestand is door Bascom gemaakt.
De Sketch van Arduino maakt ook een hex-bestand, maar slaat dit niet op, zoals Bascom wel doet.
Selecteer het te uploaden bestand en je bent in zaken, uploaden en het werkt.

Wijzigen com-poort
Ga (in Windows) naar: configuratiescherm > systeem > apparaatbeheer > poorten
Kies de Uno en wijs een lager poortnummer toe.

Nu is het een kwestie van ervaring opdoen. Door de in C geschreven voorbeeldprogramma’s in Bascom te vertalen. Controle doe je door de werking van beide programma’s met elkaar te vergelijken.

Groeten, Dré Jansen.

Geacht Forum,

Ik heb hieronder drie maal het programma van het knipperledje (D13) in Bascom herschreven.
Hierover zou ik uw mening willen horen.

BLINK-1
Het programma zoals het in Bascom geschreven zou kunnen worden.
Commentaar staat achter een ' (apostrofje)

BLINK-2
Hier worden de Arduino-namen toegepast.
De vertaling gebeurd IN het hoofdprogramma zelf

BLINK-3
Hier is een apart bestand geschreven, waarin de aliassen worden benoemd.
Het doel: hoofdprogramma overzichtelijk houden.

Dit programma heeft een aanvulling: ' Arduino_configuratie.bas
In die aanvulling worden additionele zaken benoemd, zoals aliassen
Als voorbeeld heb ik hier meerdere zaken benoemd, die voor het knipperledje niet worden gebruikt.

Persoonlijk kies ik er voor om de alias-benamingen IN het hoofdprogramma te plaatsen.
De reden is, dat je dan alles bij elkaar hebt.
Met commentaar en verwijzingen zal het programma toch wel overzichtelijk blijven
Uiteraard kan het in de toekomst toch anders blijken te zijn, de tijd zal het leren.
Verder ben ik van mening om als ik een alias voor portB.5 gebruik, dit dan maar meteen LEDje te noemen.
D13 is net zo onduidelijk als B5. daarmee zijn de Arduino benamingen om zeep geholpen.
Bovendien programmeren we hier in Bascom, niet in C.

Wat is uw mening hierover?
Programma's zijn rechtstereeks in Bascom over te nemen.

================================
' BLINK-1

' on board LEDje op D13 knipperen

$regfile = "m328def.dat" ' Atmega-328
$crystal = 16000000 ' 16 Mhz Kristal
' de twee instellingen (Regfile en crystal) mogen ook worden weggelaten, omdat dit al in de compiler is aangegeven.
' omdat de compiler zijn instellingen wel eens 'vergeet' zou ik dit als standaard blijven gebruiken.

Ddrb.5 = 1 ' maak van poort B5 een uitgang

Do ' begin van het programma
Toggle Portb.5 ' verander poort b5 van waarde is hij hoog, dan wordt hij laag.
Waitms 1000 ' wacht 1000 ms
Loop ' einde programma, begin opnieuw
End

=====================================
' BLINK-2
'
' on board LEDje op D13 knipperen
' bij deze vertaling wordt de poortnaam vooraf aangepast aan de naam die bij Arduino wordt gebruikt
' de Bascomnaam B5 krijgt een alias D13 (D13 Alias PORTB.5)
' als je dan toch aliassen gebruikt, benoem dan niet de poortnaam, maar geef het de naam van de toepassing
' bijvoorbeeld portb.5 = motor (motor Alias portb.5)

$regfile = "m328def.dat" ' Atmega-328
$crystal = 16000000 ' 16 Mhz Kristal

D13 Alias Portb.5 ' je kan hier elke willekeurige benaming toewijzen.
Ddrb.5 = 1 ' maak van poort D13 een uitgang

Do ' begin van het programma
Toggle D13 ' verander poort D13 van waarde
Waitms 1000 ' wacht 1000 ms
Loop ' einde programma, begin opnieuw
End

=======================================

' BLINK-3
'
' on board LEDje op D13 laten knipperen

$regfile = "m328def.dat" ' Atmega-328
$crystal = 16000000 ' 16 Mhz Kristal

$include "blink-3_config.bas" ' hierin worden onder andere de namen toegewezen
' dit bestand mag elke naam en extensie hebben.

Do ' begin van het programma
Toggle D13 ' verander poort D13 van waarde
Waitms 1000 ' wacht 1000 ms
Loop ' einde programma, begin opnieuw
End

==========================================
' Arduino configuratie

' digitale variabelen
D0 Alias Portd.0 ' = RxD
D1 Alias Portd.1 ' = TxD
D2 Alias Portd.2
D3 Alias Portd.3 ' = PWM
D4 Alias Portd.4
D5 Alias Portd.5 ' = PWM
D6 Alias Portd.6 ' = PWM
D7 Alias Portd.7
D8 Alias Portb.0
D9 Alias Portb.1 ' = PWM
D10 Alias Portb.2 ' = PWM
D11 Alias Portb.3 ' = PWM
D12 Alias Portb.4
D13 Alias Portb.5 ' onboard LEDje

' analoge variabelen
A0 Alias 0 ' Portc.0
A1 Alias 1 ' Portc.1
A2 Alias 2 ' Portc.2
A3 Alias 3 ' Portc.3
A4 Alias 4 ' Portc.4
A5 Alias 5 ' Portc.5

' aan en uit waarden
Const Aan = 1 ' pin = hoog
Const Uit = 0 ' pin = laag

===========================================
groeten, Dré Jansen

Aanvulling:

vertaalde programma's: AnalogReadSerial; BareMinium; Blink; DitalReadSerial; Fade; ReadAlalogVoltage.
ik ga rustig verder, leer er veel van, maar hier komen geen reacties.

de vertalingen omvatten de volgende bestanden: het originele xx.ino bestand; xx.bas en xx.hex
het hex bestand is het eigenlijke programma dat ook door Arduino wordt geupload maar helaas niet laat zien.

hieronder de BAS bestanden, het origineel hebben jullie al, en aan een HEX bestand zie je niet veel.
download het gratis Bascom programma van MCSelec.com en je kan zelf het HEX bestand maken.

=============
'(
AnalogReadSerial
Leest de analoge ingang port A0 (= C.0) en geeft het resultaat op de monitor.
sluit de loper van een potmeter aan op A0 en de overige twee op massa en +5V
')
$regfile = "m328def.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 'communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'A-D convertor inschakelen

Do ' begin van het programma
Print "{012}" 'maak het scherm schoon.
Print "waarde is " ; Getadc(0) 'druk waarde af (op beeldscherm)
Waitms 100 ' wacht 1000 ms
Loop ' einde programma, begin opnieuw
End

========================

'(
BareMinimum
het minimale dat nodig is voor het programmeren.
het eerste gedeelte de instellingen en declaraties
ook subroutines moeten worden gedeclareerd.
Tussen do en loop komt het zich herhalende deel van het programma
')
$regfile = "m328pdef.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 'communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space

' hier de declaraties en instellingen

Do ' begin van het programma

' hier de zich steeds herhalende routines

Loop ' begin opnieuw bij do
End ' einde programma

=======================

'(
Blink
laat onboard ledje knipperen 1 seconde aan, een seconde uit.
dit ledje zit aangesloten op digitale poort B5 bij Arduino bekend als D13
')

$regfile = "m328def.dat" ' Atmega-328
$crystal = 16000000 ' 16 Mhz Kristal
Ddrb.5 = 1 ' maak van poort B5 een uitgang

Do ' begin van het programma
Toggle Portb.5 ' verander poort b5 van waarde is hij hoog, dan wordt hij laag en andersom.
Waitms 1000 ' wacht 1 seconde
Loop ' einde programma, begin opnieuw
End

==========================

'(
DigitalReadSerial
leest de waarde van datapootje D2 en presenteert dit op de monitor.
let op, de interne pull-up weerstand is UITgeschakeld, zelf toevoegen!
schakel naar massa met pull-up weerstandje naar +5V
het knopje moet een naam krijgen: ik noem hem: 'knopje'
')
$regfile = "m328pdef.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 ' communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space

Ddrd.2 = 0 ' maakt van poort D pootje 2 een ingang
Knopje Alias Pind.2 ' geeft naam: knopje aan de latch van poort D2

Do
If Knopje = 0 Then ' bij ingedrukt knopje ligt de ingang aan massa potentiaal
Print "knopje ingedrukt"
Else
Print "knopje los" ' bij een losgelaten knopje zorgt de pull-up weerstand voor 5V op de ingang
End If
Loop
End

=========================

'(
DigitalReadSerial-2
Leest De Waarde Van Datapootje D2 En Presenteert dit Op De Monitor.
in dit programma wordt de interne pull-up weerstand ingeschakeld
het on-board LEDje wordt ook aangestuurd.
verder is dit programma gelijk aan het origineel
uitsluitend een knopje is vodoende, schakel D2 naar massa.
het knopje moet een naam krijgen: ik noem hem: 'knopje'
hier is nog geen rekening met debounce gehouden.
')
$regfile = "m328pdef.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 'communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space

Ddrb.5 = 1 'maakt van poort D13 een uitgang (LEDje)
Ddrd.2 = 0 'maakt van poort D2 een ingang
Portd.2 = 1 'schakel voor D2 de pull-up weerstand in
Knopje Alias Pind.2 ' geeft naam: knopje aan de latch van poort D2

Do
Print "{012}" ' scherm schoonmaken
If Knopje = 0 Then ' bij ingedrukt knopje ligt de ingang aan massa potentiaal
Print "knopje ingedrukt"
Set Portb.5 ' ledje aan
Else
Print "knopje los" ' bij een losgelaten knopje zorgt de pull-up weerstand voor 5V op de ingang
Reset Portb.5 ' ledje uit
End If
Waitms 100 ' voor wat rust in de tent
Loop
End

================================

' Fade
' het faden van een led op pootje D9 met PWM
' fade van helder naar 0 in stapjes van 5 met pauzes van 30 ms

$regfile = "m328pdef.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 ' communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space

Ledje Alias Pwm1a ' PWM poort naam van ledje geven
Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down ' PWM generator instellen
Dim Helder As Byte ' lichtintensiteit van ledje

Do ' begin
For Helder = 0 To 255 Step 5 ' in stapjes van 5 naar donker
Pwm1a = Helder ' lampje aansturen
Waitms 30 ' effe wachte
Next Helder ' volgende stap

For Helder = 255 To 0 Step -5 'terugstappen naar vol licht
Pwm1a = Helder ' lampje instellen
Waitms 30 ' effe wachte
Next Helder ' volgende stapje
Loop ' overnieuw
End

=======================================

tot zo ver deze vertalingen
mocht er geen belangstelling zijn, dan was dit mijn laatste mailing.
groeten, Dré

Op zich vind ik het eel goed van jou dat je dit doet :slight_smile:
Maar ik zie echt niet in hoe Bascom simpler is dan de Arduino taal.
Met vriendelijke groet
Jantje

Beste Dre,

Dit valt onder het hooftstuk 'waarom makkelijk als het ook moeilijk kan...'
De standaard taal voor de Arduino is C.
Nu kun je wel koppig aan je voorliefde voor BASIC vasthouden, maar ik vrag me af wat je daar mee opschiet.
Er zullen weinig mensen zijn die je kunnen, of willen, helpen bij eventuele problemen en er zullen, denk ik, ook weinig zijn die in je BASIC excersities geinteresseerd zullen zijn.

Het is je goed recht om je hobby op jouw eigen manier te beoefenen.
Maar als je ideeen uit wilt wisselen met anderen kun je beter overgaan op C.

Groetjes,
Henk SWT

hoi Jantje en Henk,

Bij nader inzien hebben jullie gelijk, het is inderdaad niet slim om in deze C wereld Bascom te promoten.
Ik heb met FEZ (een ander C platform) onprettige ervaringen met C opgedaan.

In een grijs verleden had ik positieve Bascom ervaringen, die mij ooit een eerste prijs hebben opgeleverd (reisje naar Californië).
Binnen de B-plus groep, waarvan ik lid ben, wordt uitsluitend met Bascom gewerkt. Daar vind ik veel ondersteuning.
In de Robotica groep waar ik ook al lid van ben, zijn twee kampen, het C# en Bascom kamp.
Allebij erg goed. Ik heb voldoende ondersteuning, mogelijk zijn er meerderen die met mij meevoelen, vandaar dit proefbalonnetje.

Als iemand binnen dit forum C toch te moeilijk vind, dan moet hij Bascom eens proberen. Andersom kan en mag natuurlijk ook.
Uitproberen kost niets, er is een gratis demoverzie.
Jullie zijn helemal los op C, houden zo!

groeten, Dré Jansen

Hoi Dre,

Hoewel ik zelf niet snel in BASCOM zal gaan programmeren zie ik in elk geval wel een paar pareltjes.

  • Toggle() is een vaak gebruikt iets dus daar wil ik wel een C-variant van,
  • WaitMs() vind ik 10x duidelijker dan delay() vanwege de toevoeging ms.

Om de discussie aan te scherpen, in bladen als ELEKTOR staan vaak BASCOM listings, en deze zijn downloadbaar en mezelf kennende heb ik geen zin om deze in C++ te vertalen. Dus op een gegeven moment komt die BASCOM omgeving vanzelf.

Verder een vraag: Hoe werkt het met het zelf maken van libraries in BASCOM? bv voor een sensor of actuator of een statistical lib etc.

gr. Rob

Hoi Rob,

Inderdaad, als je met C vertrouwd bent dan is dat natuurlijk de juiste weg.
Voor mij is dat Basic, en Bascom is voor mij de juiste weg.
Ik heb er lang niets meer aan gedaan, dus ben ik de Arduino voorbeeld programma's in Bascom aan het vertalen
Niet dat de mensheid hierop zit te wachten, maar ik steek ver veel van op, heb er plezier in, en daar draait het uiteindelijk allemaal om. Het werkt prima, als je interesse hebt in mijn schrijfsels, dan kan je ze krijgen.

Ik ben nu bezig met het voorbeeld van het keyboard, het muziek instrument.
Ik zoek naar de druk gevoelige weerstanden, daarom kom ik weer op dit forum, waar ik al bijna gewist was.
Maar gelukkig kan en mag ik er toch nog op komen. (dank u, moderator)

In dat keyboard programma wordt gebruik gemaakt van een bibliotheek.
ik kan de C-programma's wel lezen, de toelichting en commentaren kan ik ook lezen, dat is de bron van mijn geknutsel. de bibliotheek kan ik wel lezen, maar of ik er wat aan heb? dat weet ik nog niet.
Ik vermoed dat er met PWM een toon wordt gemaakt, de bibliotheek staan de voorgebakken noten.
Of dat werkelijk zo is, weet ik niet.

In Bascom kan je ook gebruik maken van bibliotheken, dat zal zeker aan de orde komen
Ik ben al vanaf eind zestiger jaren lid van Elektuur, later Elektor dus ik ben bekend met die materie.
Er heeft enkele jaren geleden een komplete Bascom cursus in Elektor gestaan.
Elektor heeft een boek uitgegeven speciaal voor de Atmel (Arduino) processor er is een vergelijkbaar boek over C en Atmega. Ja, ook dat boek heb ik gekocht, en ook het boek van Wim Dolman Micro controllers en de taal C. kortom, ik weet dat C erg moeilijk is.

ik heb meegedaan aan het FEZ project, een robotje. (overigens staat er nu een te koop voor E 50,- kijk maar eens op de HCC robotica site) normaal betaal je meer dan het dubbele.
Van een particulier die C ook erg moeilijk vind. Ik doe de mijne nog niet weg, wie weet komt het er ooit nog eens van.

Groeten, Dré

Ik heb me net vandaag ingeschreven op dit forum. Met deze is dit mijn allereerste post.

Ik heb een hele tijd AVR's in C geprogrammeerd (AVR studio) en ben dan overgestapt naar Bascom omdat ik daarmee VEEL sneller werkende code kan schrijven. Ik heb uiteindelijk een ongelimiteerde versie van Bascom gekocht.
De grootste applicatie die ik daarmee geschreven heb is een zender voor afstandsbedieningen (RC Transmitter), 30 A4-tjes text en code waarvan heel veel commentaar.

Nu heb ik me recent een Ardiuno aangeschaft en ben ik aan het proberen om mijn transmitter code daarop aan de praat te krijgen. In bascom neemt die code 20k in... ik hoop dat ik dat in een Arduino van 30k ook kan laden. (Zou in C toch minstens even efficiënt moeten zijn dan in Basic)

Ik kan in ieder geval zeggen dat ik het heel interessant vond om hier te lezen hoe ik Bascom code in een Arduino kan laden.

Mijn hoofdreden om een Arduino te kopen was dat er daar een heel goedkope (12 Euro) versie van bestaat (de mini of was het de nano) en dat je geen programmer nodig hebt om je code daarin te laden. Als ik er dan in slaag om mijn transmitter daarin te programmeren dan zouden er velen zijn die mijn transmitter ook zelf kunne bouwen wardoor ze voor minder dan 200 euro een behoorlijk high-end transmitter hebben.

Tenslotte wil ik ook nog meegeven dat de C++-gebaseerde Arduino taal HEEL attractief is vooral omdat er een set objecten is die klaar zijn voor gebruik. Als je ooit zelf een LCD driver in C hebt "moeten" schrijven dan weet je ook waarom ik Bascom zo leuk vond en waarom ik de Arduino nu ook zo geweldig vind.

Ik probeer nog deze avond mijn eerste library te (beginnen) schrijven: Een Pulse_place_modulation_signal generator, dat is de core van mijn transmitter.

Groeten,

Jan Huygh

net aangemeld en kom ik dit tegen

ben al gewend met de duinomite mega in basic te programmeren

soms snap ik ook niet het gebruik van C want in basic is het vaak ook te doen zelfs makkelijker en sneller en waarom zou je moeilijk doen met C code als het ook makkelijker kan in basic code.

helaas zie ik niet hoe ik het programma kan downloaden zonder eerste even 200 euro neer te leggen..
geen basis versie te krijgen?

--edit

heb me de volgende code bij elkaar gescraapt maar de timer werkt niet
de led onboard doet niks

' Arduino configuratie

' digitale variabelen
'D0 Alias Portd.0 ' = RxD
'D1 Alias Portd.1 ' = TxD
'D2 Alias Portd.2
'D3 Alias Portd.3 ' = PWM
'D4 Alias Portd.4
' D5 Alias Portd.5 ' = PWM
'D6 Alias Portd.6 ' = PWM
' D7 Alias Portd.7

'D8 Alias Portb.0
' D9 Alias Portb.1 ' = PWM
'D10 Alias Portb.2 ' = PWM
' D11 Alias Portb.3 ' = PWM
'D12 Alias Portb.4
'D13 Alias Portb.5 ' onboard LEDje

' analoge variabelen
' A0 Alias 0 ' Portc.0
'A1 Alias 1 ' Portc.1
' A2 Alias 2 ' Portc.2
'A3 Alias 3 ' Portc.3
'A4 Alias 4 ' Portc.4
'A5 Alias 5 ' Portc.5

' aan en uit waarden
'Const Aan = 1 ' pin = hoog
'Const Uit = 0 ' pin = laag

'Ddrb.5 = 1 ' maak van poort D13 een uitgang
' Ddrb.5 = 0 ' maak van poort D13 een ingang
' on board LEDje op D13 knipperen
' bij deze vertaling wordt de poortnaam vooraf aangepast aan de naam die bij Arduino wordt gebruikt
' de Bascomnaam B5 krijgt een alias D13 (D13 Alias PORTB.5)
' als je dan toch aliassen gebruikt, benoem dan niet de poortnaam, maar geef het de naam van de toepassing
' bijvoorbeeld portb.5 = motor (motor Alias portb.5)

$regfile = "m328pdef.dat" ' Atmega-328p
$crystal = 16000000 ' 16 Mhz Kristal
$baud = 9600 'communicatiesnelheid terminal
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space

'Now define Alias (optional, but easier to read)

Onboardled Alias Portd.5 'LEDs
Cellogloop Alias Portd.1
Enablerelay1 Alias Portd.2
Enablerelay2 Alias Portd.3
Externled Alias Portd.4
Powercontrol Alias Portd.5
Alarmcontrol Alias Portd.6

Startup:
'Power Up Delay to stabilize the system (optional).
Waitms 2000

'Define Program Variables:
Dim Ttc As Word 'TickTock ISR Counter

'Set up Timer0, 8 Bit, with F = 8 MHz, PS = 64, 490.196 Intr / Sec
Config Timer0 = Timer ,
On Timer0 Ticktock 'Run ISR

'Enable, (Turn On), the interrupts:
Enable Interrupts
Enable Timer0

Main:
'Main Loop Flashes LED0 using a Delay routine
'Toggle the LED On and Off
'Which state is On depends on how it is wired...
'STK500 uses 0 to turn On the LED, Reverse Logic
'This LED has a 50% duty cycle
'Do
' Reset Portd.5
' Waitms 5000 '500 mSec delay
' Set Portd.5
' Waitms 5000
'Loop

Ticktock:
'Timer0, 8 Bit, ISR
'F = 8 MHz, PS = 64, 490 Intr / Sec
'Increment TickTockCounter on each interrupt, reset it to zero every second.
'On STK500 Reset, (low), pin turns ON the LED, (Reverse logic).
Ttc = Ttc + 1 'Increment TickTock Counter
If Ttc >= 490 Then
'One Second Rollover
Ttc = 0
End If

'Flash LED1 briefly each second.
'Duration of the flash is under software control.
If Ttc > 2000 Then
'Turn on LED1
Set Portd.5
Else
Reset Portd.5
End If
Return

Je kan best je bascom code op het Bascom forum posten als je hulp zoekt.
Daar zijn er veel meer mensen die met Bascom werken dan hier.
Maar beste... in Ticktock zeg je eerst "resetTtc als die groter is dan 490"... en later zeg je "zet bit als Ttc groter is dan 2000"... dat zal natuurlijk nooit voorkomen.

Jan Huygh

hoi LG046,

Nee, je hoeft geen 200 euro te betalen, mag wel (op mijn rekening natuurlijk)
Het kan gratis! vandaar die brede grijns op mijn gezicht :wink:

Bascom downloaden van www.mcselec.com kies voor Bascom AVR.
Na installeren selecteer je via: options > compiler > chip = m328pdef.dat

Er zijn wat hulp programma’s nodig, zoals WINAVR
downloaden van: WinAVR download | SourceForge.net
Na downloaden moet je dit installeren en je hebt er verder geen omkijken meer naar.

Dan is er nog AVRDUDE downloaden van AVRDUDE - AVR Downloader/UploaDEr.
Maak een map aan op C:\avrdude
Plaats hier het gedownloade zip bestand: avrdude-5.11-Patch7610-win32.zip

Start het reeds geïnstalleerde Bascom programma, klik op: OPTIONS >> PROGRAMMER
Selecteer: EXTERNAL PROGRAMMER.
Geef het programma met pad aan C:\AVRDUDE\avrdude.exe
Daaronder de parameter:
-C c:\avrdude\avrdude.conf -p m328p -P com19 -c arduino -b 115200 -U flash:w:{FILE}:i
Da’s een hele volle regel, het beste is om te kopiëren en de plakken.
Vergeet vooral niet ‘use HEX file’ aan te vinken!

LET OP!! Er is nóg iets dat je niet mag vergeten, in de instellingregel staat ergens ….com19….
Verander dat in jouw communicatiepoort, want anders werkt het natuurlijk niet!
Klik op OK om de instellingen op te slaan.

Als je met de PC wilt communiceren, dan is dat met de volgende instellingen: 9600 8 n 1
er is een Bascom forum op. http://www.mcselec.com/
daar vind je ook alle uitleg, handleiding etc etc.

groeten, en veel suc6 !
Dré Jansen

Beste dre jansen,

Misschien een late reactie maar ik zou u graag bedanken voor uw nuttige info.
Ik heb dagen gezocht naar hoe ik de uno kon programmeren via bascom.
Ik wist wel hoe dit moest voor de Duemilanove maar dit bleek niet te werken.
Ik ben nog vrij nieuw met heel het arduino gebeuren dus dat is al opzich eventjes gewoon worden he.
Nu moet ik zeggen als leek op vlak van arduino vind ik bascom eigenlijk ook vrij soepel werken.

Hoi Dre,

Na een tijdje het arduino-forum niet bezocht te hebben, wil ik je vertellen dat ik je bascom-verhaal waardeer. Zelf ben ik min of meer begonnen met Arduino daar ik A, met microcontrollers aan de slag wou en B. als vastgeroest Basic-fanaat (ben er al sinds de Apple II mee bezig) ook eens met C(++) aan de gang wou gaan.

Of het nu om een C++ of een Basic-project gaat, mij maakt het dus ook niet zoveel uit. Met name de gelijkenis tussen QB (waar ik de meeste ervaring in heb) en Bascom maken Bascom wel zeer interessant.

Door de mogelijkheid om veel meer code in een chip te proppen met Bascom, gebruik ik het ook nog met enige regelmaat, zeker bij chips met wat minder geheugen. Met een attiny2313 (2Kb) heb ik bijv. al een led-matrix-display gebouwd waar ik met arduino al gauw een 8-16 KB chip voor nodig had gehad. Waarom... zou ik dus ook een 8-12 euro Arduino kopen als ik het ook met een atmega8 van 80 cent en een paar extra onderdeeltjes (als ik die al nodig heb) en bascom kan realiseren ?

De mogelijkheid om zo'n beetje elke Atmel 8-bit chip zo... in Bascom te kunnen programmeren, AVR of 8051, terwijl je bij Arduino eerst ff flink opzoek zal moeten gaan/zelf er het juiste configuratie-bestand voor moet schrijven (8051 kan je daarbij wel op je buik kan schrijven), is naar mijn idee ook een geweldige pré voor Bascom.

De "strijd" tussen Basic- en C++- "fanaten", simpelweg daar de een met basic en de ander met c++ is begonnen, laat me eerlijk gezegd koud. C++ wordt beter ondersteund en er is in de arduino-wereld dus ook meer over te vinden, maar daarom is de basic variant naar mijn idee niet slechter of beter. Het is maar net... waar je de meeste ervaring mee hebt.
Als er een redelijke atmega-compiler voor Cobol, Fortran, Pascal of andere talen was geweest (weet eigenlijk niet of die er zijn), dan hadden we waarschijnlijk een gelijke discussie over die talen gehad.

Het beste blijft waarschijnlijk assembler, maar voordat je dat voor Atmel-chips totaal onder de knie hebt ben je gauw x jaar verder en assembler lijkt het me ook niet echt een discussie voor een site die opgezet is om mensen in contact te brengen met het begrip microcontroller, al kan je het in principe wel in beide talen gebruiken.