Installeren van Arduino-STM32 tools in de arduino ide op ubuntu
Arduino scripts uitvoeren op de Olimexino stm32F103 met de arduino ide (Arduino-STM32) Zie ook het forum op de Olimex site.
Software ontwikkeld door Roger Clark uit Melbourne. Zie github
Stappenplan:
Download het Arduino_STM32-master.zip bestand. Pak dit uit en plaats de map in de hardware map van de arduino ide
De udev rules installeren: Ga naar arduino-1.6.12/hardware/Arduino_STM32-master/tools/linux64 en run ./install.sh
Als het goed is vind de ide zelf de board Maple (rev3) en de serieele poort /dev/ttyACM0 (maple mini)
Als je andere firmware wil uploaden moet je de board in de perpetual bootloader mode (PB mode) zetten door de reset knop in te drukken en direct daarna op de BUT knop (dit binnen de tijd dat de groen led snel knippert)
De board staat in de PB mode als de groene led langzaam blijft knipperen.
Bij de afbeelding: Het knopje naast de potentiometer is de BUT knop, deze was door het vele gebruik, op de board gesneuveld.
1) Ledreeks, een simpel script voor een led "rad van avontuur".
ledreeks. De snelheid kan je instellen met een potentiometer van 20 K (lage snelheid voor bejaarden en kleine kinderen)
Als je er een led bijplaats hoef je alleen maar achter aantal de 4 in 5 te veranderen.
Met de olimexino kan je op deze manier 34 leds aansturen. Je moet nog wel een stopknopje inbouwen, dus een pin met knopje gebruiken om uit de lus te stappen.
In dit geval kan je pin D0 voor de potentiometer en pin D1 voor de knop gebruiken.
int x;
int Led = 0;
int aantal = 4; //Reeks met 4 leds die na elkaar gaan branden.
int snelh;
void setup()
{
for (int x = 0; x < aantal; x++) //Middels deze for lus worden pin 0 t/m pin 3 output pinnen.
{
pinMode(x, OUTPUT);
}
}
void loop()
{
snelh = analogRead(15); //Is A0 op de olimexino. Zie: boardlayout olimexino)
snelh = snelh + 250;
//het kortste delay = 25 milisec en de langste delay = 205 + 4075 = 4,28 seconde
digitalWrite(Led, HIGH);
delay(snelh);
digitalWrite(Led, LOW);
Led = Led + 1; //De code Led = Led++ blijkt niet te werken en geeft geen foutmelding
if (Led == aantal) Led = 0;
}
Led heen en weer
int Ledh = 0;
int Ledt;
int aantal = 4; //je hoef alleen maar het aantal leds in de reeks aan te geven
int snelh; //als het getal 4 is zitten leds 0 t/m 3 in de reeks
void setup()
{
for (int x = 0; x < aantal; x++) //pin 0 t/m pin 3 worden ingesteld als outputpinnen
{
pinMode(x, OUTPUT);
}
Ledt = aantal - 2;
}
void loop()
{
snelh = analogRead(15);
snelh = snelh + 250;
if (Ledh < aantal)
{
digitalWrite(Ledh, HIGH);
delay(snelh);
digitalWrite(Ledh, LOW);
Ledh = Ledh + 1; //Als bovenstaande lus stopt is Ledh = 4
}
else {
digitalWrite(Ledt, HIGH);
delay(snelh);
digitalWrite(Ledt, LOW);
Ledt = Ledt - 1; //Als bovenstaande lus stopt is Ledt = -1
}
if (Ledt == -1)
{
Ledh = 1;
Ledt = aantal - 2;
}
}