Documente Academic
Documente Profesional
Documente Cultură
învățare
Florean Mihail, profesor de fizică grad didactic I
Ce este Arduino
Avem nevoie:
❖ Mediu de programare (Arduino IDE)
❖ Program ( Sketch) scris în C++
❖ Plăcuţa Arduino conectată prin cablu la calculator
Arduino IDE
Descărcăm şi o instalăm.
Dacă avem o plăcuță neoficială (Made in China) instalăm controlerul Usb ch340
https://sparks.gogo.co.nz/ch340.html
Arduino cloud
https://app.arduino.cc/
Testăm plăcuţa
1. Conectăm plăcuţa la calculator
2. În mediul Arduino IDE urmăm meniul Fişier->Exemple-> 01.Basics->Blink
3. În meniul instrumente verificăm corectitudinea alegerii plăcii (arduino Uno)
4. În meniul instrumente verificăm corectitudinea alegerii portului de date (de obicei com 3)
5. Rulăm la execuţie şi înscriere a programului
6. Rezultatul:
Programul exemplu Blink
void setup() {
void loop() {
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
}
Schimbaţi perioada de iluminare conform
ritmului cardiac
T=t/N
Determinarea accelerației căderii
libere prin metoda stroboscopică
Breadboard
linia de alimentare (roşu “+” albastru “-”=
Conexiune electrică
Conectăm un led paralel cu ledul de pe
plăcuţă
Geografia - Detectarea cutremurului de
Pământ
const int Pin=7;
void setup() {
pinMode(Pin, INPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = digitalRead(Pin);
if(sensorValue==HIGH){
Serial.println("Cutremur!!!");
delay(500);
}
}
Biologia
Organismul uman și sănătatea
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
}
Cod program
// the setup routine runs once when you press // print out the value you read:
reset: if (voltage>1.47){
void setup() { digitalWrite(3,HIGH);
// initialize serial communication at 9600 bits digitalWrite(2,LOW);}
per second:
Serial.begin(9600); if (voltage<1.47 and voltage>1.12){
pinMode(3, OUTPUT); digitalWrite(3,LOW);
pinMode(2, OUTPUT);
digitalWrite(2,HIGH);}
}
// the loop routine runs over and over again
if (voltage<0.2){
forever:
void loop() {
digitalWrite(3,LOW);
// read the input on analog pin 0: digitalWrite(2,LOW);}
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes Serial.println(voltage);
from 0 - 1023) to a voltage (0 - 5V): }
float voltage = sensorValue * (5.0 / 1023.0);
Măsurați tensiunile pe rezistori
U2
U1
Măsurarea distanței cu senzorul ultrasonic
Programul
#define echoPin 2 // attach pin D2 Arduino to pin Echo void loop()
of HC-SR04 {
#define trigPin 3 // attach pin D3 Arduino to pin Trig of digitalWrite(trigPin, LOW);
HC-SR04 delayMicroseconds(2); // wait for 2 ms to
avoid
long duration; // Variable to store time taken to the pulse digitalWrite(trigPin, HIGH); // turn on the
int distance; // Variable to store distance calculated using Trigger to generate pulse
void setup() delayMicroseconds( 10); // keep the
{ trigger "ON" for 10 ms to generate
pinMode(trigPin, OUTPUT); // Sets the digitalWrite(trigPin,LOW); // Turn off the
trigPin as an OUTPUT pulse trigger to stop
pinMode(echoPin, INPUT); // Sets the
echoPin as an INPUT duration = pulseIn(echoPin, HIGH);
Serial.begin(9600); distance = duration * 0.0344 / 2;
} Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(100);
}
Măsurarea temperaturii cu DS18B20
#include <OneWire.h> void loop() {
#include <DallasTemperature.h> sensors.requestTemperatures();
float temperatura = sensors.getTempCByIndex(0);
// Definirea pinului conectat la senzorul DS18B20
#define ONE_WIRE_BUS 2 if (temperatura != DEVICE_DISCONNECTED_C) {
Serial.print("Temperatura: ");
OneWire oneWire(ONE_WIRE_BUS); Serial.print(temperatura);
DallasTemperature sensors(&oneWire); Serial.println("°C");
} else {
void setup() { Serial.println("Senzorul nu este conectat!");
Serial.begin(9600); }
sensors.begin();
} delay(1000); // Așteaptă 1 secundă între citiri
}
Instalarea librăriilor
void setup() {
Serial.begin(9600);
}
void loop() {
int temp_adc_val;
float temp_val;
temp_adc_val = analogRead(lm35_pin); /* Read Temperature */
temp_val = (temp_adc_val * 4.88); /* Convert adc value to equivalent
voltage */
temp_val = (temp_val/10); /* LM35 gives output of 10mv/°C */
Serial.print("T= ");
Serial.println(temp_val);
delay(1000);
}