De rezistente nu a fost nevoie.
Codul a fost scris in Arduino IDE.
while (1) {
if ((PINC & (1 << PINC0)) == 0 && flag1 == 0) {
timer1 = TCNT1;
flag1 = 1;
}
if ((PINC & (1 << PINC1)) == 0 && flag2 == 0) {
timer2 = TCNT1;
flag2 = 1;
}
if (flag1 == 1 && flag2 == 1) {
if (timer1 > timer2) {
Time = (timer1 - timer2) / (F_CPU / 1024.0);
} else if (timer2 > timer1) {
Time = (timer2 - timer1) / (F_CPU / 1024.0);
}
speed = (distance / Time) * 3600 / 1000;
flag1 = 0;
flag2 = 0;
}
if (speed == 0) {
lcd_set_cursor(0, 1);
if (flag1 == 0 && flag2 == 0) {
lcd_print("No car detected ");
} else {
lcd_print("Searching... ");
}
} else {
lcd_clear();
lcd_set_cursor(0, 0);
lcd_print("Speed:");
char buffer[10];
dtostrf(speed, 4, 1, buffer);
lcd_print(buffer);
lcd_print(" Km/Hr ");
lcd_set_cursor(0, 1);
if (speed > 50) {
lcd_print(" Over Speeding ");
PORTB |= (1 << PORTB5);
} else {
lcd_print(" Normal Speed ");
}
_delay_ms(3000);
PORTB &= ~(1 << PORTB5);
speed = 0;
lcd_clear();
}
}
#include <Wire.h> #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int timer1; int timer2;
float Time;
int flag1 = 0; int flag2 = 0;
float distance = 3.5; float speed;
int ir_s1 = A0; int ir_s2 = A1;
int buzzer = 13;
void setup() {
pinMode(ir_s1, INPUT); pinMode(ir_s2, INPUT); pinMode(buzzer, OUTPUT);
lcd.begin(16, 1);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("VYCTOR MASHINA");
delay(2000);
lcd.clear();
}
void loop() {
if (digitalRead(ir_s1) == LOW && flag1 == 0) {
timer1 = millis();
flag1 = 1;
}
if (digitalRead(ir_s2) == LOW && flag2 == 0) {
timer2 = millis();
flag2 = 1;
}
if (flag1 == 1 && flag2 == 1) {
if (timer1 > timer2) {
Time = timer1 - timer2;
} else if (timer2 > timer1) {
Time = timer2 - timer1;
}
Time = Time / 1000;
speed = (distance / Time);
speed = speed * 3600;
speed = speed / 1000;
}
if (speed == 0) {
lcd.setCursor(0, 1);
if (flag1 == 0 && flag2 == 0) {
lcd.print("No car detected");
} else {
lcd.print("Searching... ");
}
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Speed:");
lcd.print(speed, 1);
lcd.print("Km/Hr ");
lcd.setCursor(0, 1);
if (speed > 50) {
lcd.print(" Over Speeding ");
digitalWrite(buzzer, HIGH);
} else {
lcd.print(" Normal Speed ");
}
delay(3000);
digitalWrite(buzzer, LOW);
speed = 0;
flag1 = 0;
flag2 = 0;
}
}
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.