Laser + LDR Objectif : quand on coupe le faisceau laser, une note est jouée. Composants : 1 plaque à insertion avec des fils 1 carte Arduino nano 1 diode laser de faible puissance alimentée en 5 V (ATTENTION aux yeux) 1 photo résistance 1 haut parleur 1 résistance ~ 100 Ohms 1 résistance ~ 10 kohms Schéma : Code : #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49
#define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415
#define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520
#define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 int LDR_pin=1; int buzzer_pin=8; void setup() // put your setup code here, to run once: Serial.begin(9600); pinmode(buzzer_pin,output); digitalwrite(buzzer_pin,low); void loop() // put your main code here, to run repeatedly: int r=analogread(ldr_pin); Serial.println(r); if (r < 900) tone(buzzer_pin, NOTE_C4,10); Serial.println(«BUZZ»); else digitalwrite(buzzer_pin,low); Ci-dessous la version avec 4 lasers (avec alimentation indépendante)
Affichage de la température sur un afficheur LCD et sur un appareil Android Composants Une carte Arduino Nano Un module bluetooth HC-06 Un afficheur LCD 2 lignes de 16 caractères chacune Un capteur de température ds18b20 Un potentiomètre 10 ko Une résistance 4.7 ko Une plaque à insertion rapide Des fils Un ordinateur avec l environnement de développement Arduino Schéma de câblage
Enlever le module bluetooth avant de charger le programme dans la carte Arduino et le remettre juste après sinon il y a des problèmes de communication entre l ordinateur et la carte arduino. Pour récupérer la température sur son portable Android, installer l application Bluetooth Terminal (de Qwerty il me semble). Une fois connecté, l envoi de la lettre A permet de récupérer la température sur le téléphone. Code #include <LiquidCrystal.h> #include <OneWire.h> // Inclusion de la librairie OneWire #define DS18B20 0x28 // Adresse 1-Wire du DS18B20 #define BROCHE_ONEWIRE 10 // Broche utilisée pour le bus 1- Wire OneWire ds(broche_onewire); // Création de l objet OneWire ds // Fonction récupérant la température depuis le DS18B20 // Retourne true si tout va bien, ou false en cas d erreur boolean gettemperature(float *temp) byte data[9], addr[8]; // data : Données lues depuis le scratchpad // addr : adresse du module 1-Wire détecté if (!ds.search(addr)) // Recherche un module 1-Wire
ds.reset_search(); return false; // Réinitialise la recherche de module // Retourne une erreur if (OneWire::crc8(addr, 7)!= addr[7]) // Vérifie que l adresse a été correctement reçue return false; // Si le message est corrompu on retourne une erreur if (addr[0]!= DS18B20) // Vérifie qu il s agit bien d un DS18B20 return false; // Si ce n est pas le cas on retourne une erreur ds.reset(); ds.select(addr); ds.write(0x44, 1); température delay(800); ds.reset(); ds.select(addr); ds.write(0xbe); scratchpad // On reset le bus 1-Wire // On sélectionne le DS18B20 // On lance une prise de mesure de // Et on attend la fin de la mesure // On reset le bus 1-Wire // On sélectionne le DS18B20 // On envoie une demande de lecture du for (byte i = 0; i < 9; i++) // On lit le scratchpad data[i] = ds.read(); // Et on stock les octets reçus // Calcul de la température en degré Celsius *temp = ((data[1] << 8) data[0]) * 0.0625; // Pas d erreur return true; // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() Serial.begin(9600); // Initialisation du port série // set up the LCD s number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print(«temperature :»); void loop() float temp; char c; lcd.setcursor(0, 1); if(gettemperature(&temp)) lcd.print(temp); if(serial.available()) c = Serial.read(); if(c == A ) Serial.print(temp); delay(500); Arduino + LCD (2 lines 16 chars) Parts :
1 x Arduino nano 1 x LCD 1 x Pot 10 kω // include the library code: #include // initialize the library with the numbers of the interface pins LiquidCrystal lcd(7, 8, 9, 10, 11, 12); void setup() // set up the LCD s number of columns and rows: lcd.begin(16, 2); lcd.setcursor(0, 1); // Print a message to the LCD. lcd.print(«hello, world!»); void loop() lcd.setcursor(0, 1); lcd.print(«hello, world!»);
Arduino + SR-HC04 Parts : 1 x Arduino nano 1 x led 1 x buzzer 1x R 220 Ω 1 x SR-HC04 module int trig = 12; int echo = 11; long lecture_echo; long cm; int LED = 6; void setup() pinmode(trig, OUTPUT); digitalwrite(trig, LOW); pinmode(echo, INPUT); Serial.begin(9600); pinmode(9, OUTPUT); void loop() digitalwrite(trig, HIGH); delaymicroseconds(10); digitalwrite(trig, LOW); lecture_echo = pulsein(echo, HIGH); cm = lecture_echo / 58; Serial.print(«Distancem : «); Serial.println(cm); delay(1000);
if(cm<125) digitalwrite(led, HIGH); beep(200); else digitalwrite(led,low); void beep(unsigned char delayms) analogwrite(9, 20); // Almost any value can be used except 0 and 255 // experiment to get the best tone delay(delayms); // wait for a delayms ms analogwrite(9, 0); // 0 turns it off delay(delayms); // wait for a delayms ms Find the north Parts : 1 x Arduino nano 1 x led
1x R 220 Ω 1 x HMC5883L module #include //I2C Arduino Library #define address 0x1E //0011110b, I2C 7bit address of HMC5883 int LED = 6; float direction; void setup() //Initialize Serial and I2C communications Serial.begin(9600); Wire.begin(); //Put the HMC5883 IC into the correct operating mode Wire.beginTransmission(address); //open communication with HMC5883 Wire.write(0x02); //select mode register Wire.write(0x00); //continuous measurement mode Wire.endTransmission(); pinmode(led,output); void loop() int x,y,z; //triple axis data //Tell the HMC5883L where to begin reading data Wire.beginTransmission(address); Wire.write(0x03); //select register 3, X MSB register Wire.endTransmission(); //Read data from each axis, 2 registers per axis Wire.requestFrom(address, 6); if(6<=wire.available()) x = Wire.read()<