Measure the speed of the model of Arduino.1/87. HD

27.05.2019
Захотел проверить с какой скоростью двигаются паровозы на макете. Зашел в интернет, а там нашел как все сделать, только адаптировал под имеющийся экран. Дописал скетч для Arduino и вот что получилось. Скетч: #include "U8glib.h" #define SENSOR_L 7 #define SENSOR_R 6 const double distance = 170.0; int scale = 87; int speed1; float msek; int waitingtime = 10000; long int deltatime, starttime; U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI void setup() { pinMode(SENSOR_L, INPUT_PULLUP); pinMode(SENSOR_R, INPUT_PULLUP); Serial.begin(9600); refresh_display_2(); // u8g.setRot180(); } void loop () { if (digitalRead(SENSOR_L)== LOW) { starttime = millis(); while (digitalRead(SENSOR_R)== HIGH) {} deltatime = (millis() - starttime); refresh_display(); delay(waitingtime); refresh_display_2(); } if (digitalRead(SENSOR_R)== LOW) { starttime = millis(); while (digitalRead(SENSOR_L)== HIGH) {} deltatime = (millis() - starttime); refresh_display(); delay(waitingtime); refresh_display_2(); } } void refresh_display() { u8g.firstPage(); do { u8g.setFont(u8g_font_6x10); u8g.setColorIndex(1); u8g.setPrintPos( 2, 8); u8g.print("Deltatime:"); u8g.setPrintPos( 80, 8); u8g.print(deltatime); u8g.setPrintPos( 110, 8); u8g.print(" ms "); u8g.setPrintPos( 15, 15); u8g.print("--------------"); msek = (distance/deltatime); u8g.setPrintPos( 15,24); u8g.print(msek); u8g.setPrintPos( 50, 24); u8g.print(" m/s (real)"); u8g.setFont(u8g_font_7x14); u8g.setPrintPos( 2,36); u8g.print("Speed:"); u8g.setFont(u8g_font_gdr25r); speed1 = (scale*distance/deltatime*3.6); u8g.setPrintPos( 15, 63); u8g.print(speed1); u8g.setFont(u8g_font_5x8); u8g.setPrintPos( 80, 35); u8g.print("(scale"); u8g.setPrintPos( 80, 45); u8g.print(" 1/"); u8g.setPrintPos( 95, 45); u8g.print(scale); u8g.setPrintPos( 102, 45); u8g.print(" )"); u8g.setFont(u8g_font_7x14); u8g.setPrintPos( 80, 63); u8g.print(" km/h "); } while (u8g.nextPage()); } void refresh_display_2() { u8g.firstPage(); do { u8g.setColorIndex(1); u8g.setFont(u8g_font_6x10); u8g.setPrintPos( 14, 10); u8g.print("---------------"); u8g.setPrintPos( 2, 15); u8g.print("-------------------"); u8g.setPrintPos( 2, 45); u8g.setFont(u8g_font_gdr25r); u8g.print("READY"); u8g.setFont(u8g_font_6x10); u8g.setPrintPos( 2, 55); u8g.print("-------------------"); u8g.setPrintPos( 14, 60); u8g.print("---------------"); } while (u8g.nextPage()); } Если понравилось подписывайтесь, ставьте лайки. Ваше мнение мне интересно.

Похожие видео

Показать еще