MCU boards - test og udvikling

MCU boards - test og udvikling

MCU boards

Tanken med denne blog er at samle nyttige links og andet til Micro Board.
Vi er i klubben startet op med et Arduino projekt og bloggen vil derfor være stedet hvor der kan deles "guldkorn" og der kan spørges, når / hvis I "kører fast" med Jeres eksperimenter
Gruppen lige nu er Istvan ( OZ1EYZ), Michael ( OZ5WU ), Niels ( OZ1JLT ), Jesper ( OZ9AFK ), Villads ( OZ3CM ) og Ole ( OZ8NZ ). Og alle er velkomne til at deltage og komme med gode idéer, så kom ud af "busken og deltag her til glæde for alle med interesse for disse små boards.

Program struktur i Arduino C program

Arduino UNOPosted by OZ8NZ Ole Mon, February 17, 2014 14:01:41

Jeg har gjort mig lidt tanker om hvordan det er nemmest at komme i gang med at kode program til en Arduino i C, som der jo programmeres i og har derfor lavet dette lille program som viser strukturen og de elementer der indgår, for at få kompileren til at oversætte programmet til kode som kan køres på et Arduino board.

Der er mange fordele ved at strukturere et program. Der giver bl.a. den fordel at koden bliver mere overskuelig, hvis der senere skal rettes, for at bruge den til andre formål. Det er ment at lave små funktioner som kan afprøves og som kaldes hvis funktionen skal bruges mange gange i programmet, hvor vi er sikre på at den virker hver gang.

Når koden brydes op i funktioner og andre små programdele er det også med til at optimere koden som lægges i Arduinoen, da der så kun er kode en gang, som kan bruges mange gange og derfor sparer plads i MCU'en

Dette er en måde at gøre det på, og der er sikkert andre, som har andre forslag til hvordan det kan gøres.

Grunden til at jeg synes dette er en god måde at gøre det på er at koden til de enkelte funktioner er defineret øverst i programmet og findes inden vi kommer ned på det sted i programmet, hvor de anvendes ( måske et levn fra mine pascal dage ) , og det er absolut ikke nødvendigt at gøre sådan, da alle funktioner og små program stumper og kan lægges nederst, hvis man synes bedre om den struktur.

Programmet som jeg har brugt til at vise strukturen er her under, så jeg håber med dette at have givet lidt inspiration til dem som aldrig har programmeret til en Arduino, og som ingen erfaring har med at programmere i C

Har i spørgsmål eller kommentarer til dette så skriv endeligt en kommentar.

Spørgsmål vil jeg så forsøge at svare på, og lægge ind her på siden, så snart der er fundet et svar på spørgsmålet

OZ8NZ, Ole

___________________ Program start _________________________

/*
Beskrivelse af stuktur i et Arduino program - OZ8NZ den 17 feb. 2014
Dette program viser de forskellige elemeneter som anvendes i et
program, og som er en god måde at strukture på, for at skabe oversigt
over de forskellige blokke i program
De små stumper kode som er indsat i void setup() og void loop(), vil få dioden på
port 13 til at blinke med 1 sec interval
*/

/*
I dette afsnit indsættes definitioner til biblioteker som skal anvendes
i programmet, et eksempel som er sakset fra RCT1307 programmet
*/
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
#define I2C_WRITE Wire.write
#define I2C_READ Wire.read

/*
Næste afsnit er definition af globale variable - en global variabel er data
som kan læses og skrives fra alle dele af programmet
disse er sakset fra RTC1307 programmet
*/
// Global Variables
int command = 0; // This is the command char, in ascii form, sent from the serial port
int i;
long previousMillis = 0; // will store last time Temp was updated
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
byte test;
byte zero;
char *Day[] = {"","Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
char *Mon[] = {"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

int led = 13; // definerer led på port 13

/* I dette afsnit indsættes funktioner som kan bruges fra alle moduler i programmet
Disse funktioner er sakset fra RTC1307 programmet */
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}

/* I dette afsnit indsættes procedurer ( delprogrmmer som kaldes fra programmet
eks på dette er fra sakset fra RTC1307 programmet */

void setDateDs1307() {
/* her indsættes de funktioner som programmet skal udføre,
bmærk at der startes med { og sluttes med } */
}

void blink(){ // blink på port 13 med 1 sec interval
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}

/* I dette afsnit indsættes setup som er et program der køres en gang ved start eller
reset, dette bruges til at initialisere f.eks baudrate til comport ,
void setup skal altid være i et program*/
void setup(){
// programkode indsættes her
pinMode(led, OUTPUT); // sætter port 13 til output
}

/* I dette afsnit indsættes void loop, void loop er den del af programmet
som udføres indtil reset eller power off af Arduino*/
void loop(){
blink(); // kalder blink programmmet til port 13
}



  • Comments(0)

Fill in only if you are not real





The following XHTML tags are allowed: <b>, <br/>, <em>, <i>, <strong>, <u>. CSS styles and Javascript are not permitted.