Gister mijn eerste standaard PWM-proggie in elkaar gedraaid, het stelt echt helemaal niets voor. Ik ben geen programeur, maar ik kan redelijk overweg met PERL. Mijn programeerniveau ontsteigt 'Google & paste', maar daar heb je het echt mee gehad. Voordeel van Arduino is de eenvoud, het open karakter èn alles werkt probleemloos onder Linux. Oke de meeste boekjes vertellen daar niet over, maar Arduino ontwikkelomgeving op Linux werkend maken kan ik je wel mee helpen (nog geen handvol commandootjes).
Door mijn ervaring met PERL weet ik redelijk makkelijk de klik met C++ te maken.
Hier het programaatje om een potmeter uit te lezen en een PWM uitgang aan te sturen. De potmeter geeft een spanning tussen Vcc en 0V af en de PWM uitgang stuurt via een paar weerstanden een BS170 FET. Als belasting een oude brushless fan uit een PC (12V/300mA). Uit de rommelhoek een afgedankt schakelend 12V-voedinkje gevist ... op een breadboardje de boel aan elkaar geknoopt.
// 3 is een van de digitale I/O pennen
// die bovendien PWM ondersteunt
// pen is op het bordje gemarkeerd als Digital 3 en PWM
#define pwmPin 3
// A0 is een van de ADC's
// pen is op het bordje ook gemarkeerd als Analog 0
#define potPin A0
// Initialisatie wordt één keer doorlopen
// na het starten van de microcontroller
void setup() {
// Vertel dat de pwmPin een digitale uitgang is.
// Andere mogelijkheid is input
pinMode( pwmPin , OUTPUT );\
// De USB poort gedraagt zich als een seriele
// interface en ik wil dat het ding 9600Bd praat
Serial.begin( 9600 );
}
void loop() {
// Lees de stand van de potmeter in
// Geeft een integer 0 .. 1023, 10 bits
int value = analogRead( potPin );
// Stuur de waarde naar het scherm van de PC
Serial.println( value );
// PWM / analoge uitgangsspanning op de uitgang zetten
// Standaard PWM is 8 bits breed, dus de 10 bits waarde
// Twee plaatsjes naar rechts schuiven. Delen door vier
// had ook gekund ...
analogWrite( pwmPin , value >> 2 );
// 300ms wachten anders, komen er zoveel getallen op
// het scherm van mijn PC voorbij zoeven
delay( 300 )
}
Voor de vorm het programaatje zonder toeters en bellen om een fan aan te sturen met een potmeter: de lean & mean versie ...
#define pwmPin 3
#define potPin A0
void setup() {
pinMode( pwmPin , OUTPUT );\
}
void loop() {
int value = analogRead( potPin );
analogWrite( pwmPin , value >> 2 );
}
Valt toch reuze mee? Arduino (en talloze ontwikkelaars) hebben het wel heel makkelijk gemaakt hoor

)