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.