Tentang proyek ini
Cara menggunakan layar OLED
Di sini Anda memiliki tutorial saya sebelumnya tentang hal itu:
#termasuk
dan #defines
, sebelum menjalankan setup():
#include //kita membutuhkan semua library buruk untuk OLED#include #include #include #define OLED_RESET 4 // ini pin resetnya, SAYA TIDAK MENGGUNAKAN ITAdafruit_SSD1306 display(OLED_RESET);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inisialisasi dengan I2C addr 0x3C (128x64) display.clearDisplay(); // bersihkan tampilan sebelum memulai
display.setCursor(22,20); //x,y koordinat display.setTextSize(3); //ukuran tampilan teks.setTextColor(WHITE); //jika Anda menulis BLACK, hal itu akan menghapus display.println(distance); //cetak tampilan variabel kami.setCursor(85,20); //set ukuran,cetak unit (cm/in) display.setTextSize(3); #ifdef CommonSenseMetricSystem//jika ada#define CommonSenseMetricSystem display.println("cm"); //cetak "cm" di oled #endif #ifdef ImperialNonsenseSystem//jika ada#define ImperialNonsenseSystem display.println("in"); //cetak "dalam" di oled #endif display.display(); //anda harus benar-benar menampilkan semua data delay(500); //tunggu!, tampilan kecepatan manusia.clearDisplay(); //menghitamkan tampilan
Cara menggunakan rentang ultrasonik HC-SR04
Di sini Anda memiliki lembar data, modul HC mengirimkan ledakan pulsa dan kemudian mengukur waktu yang dibutuhkan gema ultrasound untuk kembali ke tempat semula.
- Buat pulsa untuk HC trigger, HC akan melakukan pulse burst:
durasi panjang, jarak; //variabel kesayangan kita digitalWrite(trigPin, LOW); //PULSA ___|---|___ delayMicroseconds(2); digitalWrite(trigPin, TINGGI); delayMicroseconds(10); digitalWrite(trigPin, RENDAH);
- PulseIn() adalah fungsi yang jarang digunakan, mendeteksi panjang langkah tinggi (__----__) atau rendah (----___---)
Kami menggunakan #ifdef
untuk hanya mengkompilasi bagian-bagian yang kita butuhkan.
durasi =pulseIn(echoPin, HIGH); // #ifdef CommonSenseMetricSystem jarak =(durasi/2) / 29.1; #endif #ifdef ImperialNonsenseSystem distance =(durasi/2) / 73.914; #endif
- Dan ini untuk debugging jika Oled Anda tidak berfungsi:
Serial.println(jarak);//debug
Kode
- Ukuran dan tampilan ultrasound jarak
Ukuran dan tampilan ultrasound jarakArduino
Kode utama//CODE BY Javier Muñoz Sáez,05/11/2016 pertanyaan ke [email protected]#include #include #include #include #define CommonSenseMetricSystem//#define ImperialNonsenseSystem#define trigPin 13#define echoPin 12#define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET);void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inisialisasi dengan I2C addr 0x3C (128x64) display.clearDisplay();}void loop() { durasi panjang, jarak; digitalWrite(trigPin, RENDAH); //PULSA ___|---|___ delayMicroseconds(2); digitalWrite(trigPin, TINGGI); delayMicroseconds(10); digitalWrite(trigPin, RENDAH); durasi =pulseIn(echoPin, TINGGI); #ifdef CommonSenseMetricSystem jarak =(durasi/2) / 29.1; #endif #ifdef ImperialNonsenseSystem distance =(durasi/2) / 73.914; #endif display.setCursor(22,20); //oled tampilan tampilan.setTextSize(3); display.setTextColor(PUTIH); display.println(jarak); display.setCursor(85,20); tampilan.setTextSize(3); #ifdef CommonSenseMetricSystem display.println("cm"); #endif #ifdef ImperialNonsenseSystem display.println("dalam"); #endif tampilan.display(); penundaan (500); tampilan.clearDisplay(); Serial.println(jarak);//debug }
Skema