Library de base :

Programme :
#define nom valeur
void setup()
{ }
void loop()
{ }

Variables :
boolean 0 FALSE à 1 TRUE 1 bits 1 octets
unsigned char 0 à 255 8 bits 1 octets
unsigned int 0 à 65535 16 bits 2 octets
unsigned long 0 à 4 294 967 295 32 bits 4 octets

char -128 à +128 8 bits 1 octets
int -32 768 à +32 767 16 bits 2 octets
long -2 147 483 648 à +2 147 483 647 32 bits 4 octets
float -3,4 10^38 à +3,4 10^38 32 bits 4 octets

char tableau[5];
char tableau[] = {0,1,2,3,4};
int valeur = tableau [4];
itoa(valeur, string, 10);

Opération :
var++; incrémentation
var--; décrémentation

x +=y; x = x + y
x -=y; x = x - y
x *=y; x = x * y
x /=y; x = x / y
x = !x; x = 1 - x
x = 7 % 5 x = 2 (7-5)

variable = min(var1, var2);
variable = max(var1, var2);
variable = abs(var);
variable = map(var, 0, 1023, 0, 10);
variable = random(100);
variable = random(10,20);

Condition :
== égalité

< inférieur
> supérieur

<= inférieur à
>= supérieur à

!= différent de

Opérateurs logiques :
&& Et
|| Ou
! Non

Fonction :
goto lien;
lien:

if ( //condition// )
{ }
else if ( // condition // )
{ }
else
{ }

switch ( //condition// )
{
case 0:
break;
case 1:
break;
default:
break;
}

while ( //condition// )
{ }
do
{ }

for ( int i = 0; i < 5; i++)
{ }

void maFonction ()
{ }

int maFonction (int param1)
{
return param1;
}

variable = sizeof(tableau);

Input/Output :
pinMode(nom, INPUT); OUTPUT
digitalWrite(nom, HIGH); LOW
variable = digitalRead(nom);
variable = analogRead(nom);
analogWrite(nom,valeur);

Temps :
delay(); en milliseconde
delayMicroseconds(); en microseconde
millis(); temps en milliseconde depuis démarrage

Serial :
setup Serial.begin(baud);
Serial.print(texte);
Serial.print(78, BIN); OCT, DEC, HEX
Serial.print(1.23456); 1.23
Serial.print(1.23456, 0); 1
Serial.print(1.23456, 4); 1.2346
Serial.println(); mise à ligne après
Scanner bus I2C :
Permet de scanner les adresses 7-bits (de 1 à 127) et de lister tous les dispositifs I2C qu'il trouve

#include
void setup()
{
 Wire.begin();
 Serial.begin(9600);
 Serial.println("\n Scanner I2C");
}
void loop()
{
 byte error, address;
 int nDevices;
 Serial.println("Recherche…");
 nDevices = 0;
 for(address = 1; address < 127; address++ ) //Adresses 1-127
 {
  Wire.beginTransmission(address);
  error = Wire.endTransmission();
  if (error == 0)
  {
   Serial.print("Dispositif I2C trouve a l addresse 0x");
   if (address<16) Serial.print("0");
    Serial.print(address,HEX);
   Serial.println(" !");
   nDevices++;
  }
 else if (error==4)
 {
  Serial.print("Erreur inconnue a l addresse 0x");
  if (address<16) Serial.print("0");
  Serial.println(address,HEX);
  }
 }
 if (nDevices == 0) Serial.println("Pas de dispositif I2C trouve\n");
 else
 Serial.println("Termine\n");
 delay(5000); // Attend 5 secondes pour lancer le scan suivant
}
Mesure tension :
Permet de mesure la tension d'alimentation de l'Arduino.

long readVcc()
{
 long result;
 // Read 1.1V reference against AVcc
 ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
 delay(2); // Wait for Vref to settle
 ADCSRA |= _BV(ADSC); // Convert
 while (bit_is_set(ADCSRA,ADSC));
 result = ADCL;
 result |= ADCH<<8;
 result = 1126400L / result; // Back-calculate AVcc in mV
 return result
}
void setup()
{
 Serial.begin(9600);
}
void loop()
{
 Serial.print( readVcc(), DEC );
 Serial.println(" mV");
 delay(1000);
}
Mesure la SRAM :
Permet de mesure la SRAM de l'Arduino.

int freeRam ()
{
 extern int __heap_start, *__brkval;
 int v;
 return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Mesure la température :
Permet de mesure la température interne de l'Arduino, uniquement sure les ATmega168A, ATmega168P, ATmega328, ATmega328P.

float getInternalTemp(void)
{
 ADMUX = 0xC8; // Sélectionne le port analogique 8 + référence interne 1v1
 ADCSRA |= (1 << ADEN); // Active le convertisseur analogique -> numérique
 ADCSRA |= (1 << ADSC); // Lance une conversion analogique -> numérique
 while(ADCSRA & (1 << ADSC)); // Attend la fin de la conversion
 uint16_t raw = ADCL | (ADCH << 8); // Récupère le résultat de la conversion
 return (raw - 324.31 ) / 1.22; // Calcul la température
}
void setup()
{
 Serial.begin(115200);
 Serial.println("-- AVR Temperature --");
}
void loop()
{
 float temp = getInternalTemp();
 Serial.print("Temperature : ");
 Serial.println(temp);
 delay(1000);
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *