Synthèse - Labo Systèmes Embarqués
Synthèse - Labo Systèmes Embarqués
#define BP 2
#define LED 13
void setup() {
pinMode(BP, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);
void loop() {
digitalWrite(LED, etat);
#define BP1 4
#define LED1 13
#define LED2 12
void setup() {
pinMode(BP1, INPUT_PULLUP);
pinMode(BP2, INPUT_PULLUP);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
void loop() {
digitalWrite(LED1, etat1);
digitalWrite(LED2, etat2);
}
#define LED1 12
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
void loop() {
digitalWrite(LED1, !digitalRead(LED1));
digitalWrite(LED2, !digitalRead(LED1));
delay(1000);
#define BP 2
Manip 4 : Clignotement LED + autre chose
#define LED1 13
#define LED2 12
void setup(){
pinMode(BP, INPUT_PULLUP);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
void loop(){
digitalWrite(LED1, !digitalRead(LED1));
LAST_TICK = current_time;
digitalWrite(LED2, etat);
}
#define LED1 10
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
void loop() {
if (!ETAT1) {
analogWrite(LED1, VALUE);
} else {
digitalWrite(LED1, false);
ETAT1 = !ETAT1;
LAST_TICK1 = current_time;
if (!ETAT2) {
analogWrite(LED2, VALUE);
} else {
digitalWrite(LED2, false);
ETAT2 = !ETAT2;
LAST_TICK2 = current_time;
}
Manip 6 : télérupteur #define BP 2
#define LED 13
void setup() {
pinMode(BP, INPUT_PULLUP);
pinMode(LED,OUTPUT);
Serial.begin(9600);
void loop() {
digitalWrite(LED,
!digitalRead(LED));
Manip 7 : mesures analogiques
}
WAS_PRESSED = pressed;
#define PT 0
#define LED 11
void setup() {
pinMode(PT, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
void loop() {
analogWrite(LED, value);
}
#define BP 2
#define LED 11
Manip 8 : Le Dimmer
void setup() {
pinMode(BP, INPUT_PULLUP);
pinMode(LED,OUTPUT);
Serial.begin(9600);
void loop() {
if (pressed) {
if (ETAT && ELAPSED >= TICK && ELAPSED >= COUNTER * TICK) {
if (NEXT) {
} else {
analogWrite(LED, VALUE);
COUNTER++;
if (!pressed) {
if (WAS_PRESSED) {
ETAT =!ETAT;
digitalWrite(LED, ETAT);
} else {
NEXT = !NEXT;
COUNTER = 0;
ELAPSED = 0;
TIME = millis();
}µ
WAS_PRESSED = pressed;
}
#define BT 2
Manip Bonus
#define PO 0
#define LED1 11
#define LED2 12
void setup() {
pinMode(BT, INPUT_PULLUP);
pinMode(PO, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
void loop() {
NOTES : bool pressed = !digitalRead(BT);
LED: 0 → 255
Debug: Serial.println
digitalWrite(LED2, pressed ? false : true);
Sucre syntaxique if-else → condition ? SiVrai : SiFaux
}
Ne jamais lire une valeur booléenne d'une led qui a une valeur numérique.
Raspberry
Intro
7. Port alimentation micro USB : le Raspberry consomme peu et est alimenté en 5Volts.
Installation
Choisir l’OS « Raspberry Pi OS 64 bit », choisir la carte SD, aller dans la configuration avancées (Ctrl + Maj + X)
activer SSH via authentification par mot de passe + créer un utilisateur et un mot de passe pour celui-ci. Être sûr
que la carte SD soit vide puis procéder à l’écriture
Pour savoir quelle IP, débrancher et rebrancher, puis ping (-t pour augmenter la durée), si il échoue quand
débranché : BINGO
Changer le Hostname
Configurer par le menu
Pour pas être trop facile à trouver, nombre très souvent au-dessus de 10100
Fonctionnement : créer une paire de clefs privé (composé de 2 nb premiers servant à générer la clé publique) et
une publique (produits des 2 nombres premiers). Une est diffusée, l’autre non. Pour un échange (comme SSH), les
2 partis de partagent leur clés privées, ils utilisent celle-ci pour chiffrer le message tandis que la privé va le
déchiffrer (permet aussi de valider l’identité du client)
Wi-Fi
Si on veut utiliser le wifi, tout d’abord dans la configuration : Localisation Option → WLAN country → Belgium
Pour avoir une version chiffré du code Wi-Fi (qu’il faudra recopier dans le fichier du dessus)
Ici la com série se fait par le port USB mais peut aussi se faire sur les pins digitales 0 et 1 de l’Arduino
Pour l’Arduino, Serial.read() récupère le premier bit, un bit à la fois donc qu’un seul caractère en C.
Mieux vaut utiliser Serial.readString() qui est plus optimal pour les messages plus long car il récupère l’entièreté du
buffer (chaque octet représente un caractère). Attention de prendre en compte les éventuels \r\n
Pas hésiter à décomposer le projet en étape et tester les blocs indépendamment. Par défaut, le moniteur série
ajoute un caractère de return à la fin. Possible de désactiver comme sur l’image ci-dessous.