Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ---------------------------------------------------------------------------
- // Example NewPing library sketch that does a ping about 20 times per second.
- // ---------------------------------------------------------------------------
- #include <NewPing.h>
- #define TRIGGER_PIN 7 // Trigger Ayagi
- #define ECHO_PIN 6 // Echo Ayagi
- #define MAX_DISTANCE 150 // En uzun ayarlanacak mesafe, 400-500 cm ya kadar ayarlanabilir
- #define MIN_DISTANCE 10 // En yakin mesafe
- // Pinzuweisung der LED´s
- byte led20 = 2; // LED 20%
- byte led50 = 3; // LED 50%
- byte led75 = 4; // LED 75%
- byte led100 = 5; // LED 100%
- // Doluluk orani led göstergesi
- const int levelmin = 20;
- const int levelhalb = 50;
- const int level75 = 75;
- const int levelvoll = 100;
- int timer1 ;
- int timer2 ;
- bool flag; // Yardimci ezberleyici
- int level; // Doluluk Seviyesi
- uint32_t startzeit, messzeit, Restzeit;
- uint32_t delayvoll; // Tam dolu durumda geciktirme
- // Instanz New Ping
- NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
- void setup() {
- Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
- pinMode(led20, OUTPUT);
- pinMode(led50, OUTPUT);
- pinMode(led75, OUTPUT);
- pinMode(led100, OUTPUT);
- }
- void loop() {
- delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
- // auslesen und scalieren auf 0-100%
- level = map(sonar.ping_cm(), MIN_DISTANCE, MAX_DISTANCE, 100, 0);
- if (level > levelmin)digitalWrite(led20, HIGH);
- else digitalWrite(led20, LOW);
- if (level > levelhalb)digitalWrite(led50, HIGH);
- else digitalWrite(led50, LOW);
- if (level > level75)digitalWrite(led75, HIGH);
- else {
- digitalWrite(led75, LOW);
- if (!flag) { // einmal messen
- messzeit = millis() - startzeit; // Ölcme zamani
- flag = true; // es ist gemessen
- }
- }
- if (level >= levelvoll) {
- if (millis() - delayvoll > 1000UL) { // Doluluk belirleme
- digitalWrite(led100, HIGH);
- startzeit = millis(); // Ölcme zamani baslangic belirleme
- flag = false;
- messzeit = 0;
- Restzeit = 0 ;
- }
- }
- else {
- digitalWrite(led100, LOW);
- delayvoll = millis(); // Tam dolu olursa Zamani Resetle
- }
- Serial.print("Level: ");
- Serial.print(level); // Send ping, get distance in cm and print result (0 = outside set distance range)
- Serial.print("%");
- Serial.print (" Messzeit ");// Olculen Zaman (25% Bosalana kadar gecen süreyi yaz ve ezberle)
- Serial.print(messzeit);
- Serial.print (" Behälter vermutlich leer in "); // Depo tahminen bosalacak süre :
- Serial.print (messzeit/1000*3); Serial.println("Sekunden"); // Saniyede
- // delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement