Wyświetlacz biegów w motocyklu - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Konstrukcje (https://forum.arduinopolska.pl/dzial-konstrukcje) +--- Wątek: Wyświetlacz biegów w motocyklu (/watek-wy%C5%9Bwietlacz-bieg%C3%B3w-w-motocyklu) |
Wyświetlacz biegów w motocyklu - reactor - 04-08-2020 Witam! Dzięki za przyjęcie i głoszę się od razu z problem! Nie wiem jak tu wkleić kod arduino w cytacie, więc podaje link do całego projektu. https://megawrzuta.pl/…/74a3250e9fe795eeb89679444c66bf79.ht… Jest to projekt wyświetlacza biegów, temp, oraz napięcia akumulatora w motocyklu. Problem jednak w tym, że wywala mi błąd jak poniżej przy weryfikacji i nie mam pojęcia jak się z tym uporać! DL650-usuniety_napis_i_wy_wietlanie:1:10: fatal error: DallasTemperature.h: No such file or directory #include <DallasTemperature.h> ^~~~~~~~~~~~~~~~~~~~~ compilation terminated. exit status 1 DallasTemperature.h: No such file or directory Moja wiedza na temat arduino jest podstawowa i głównie korzystam z gotowych projektów jak wyżej! Może proszę o zbyt wiele, ale dla osoby z moją wiedza najlepszym rozwiązaniem problemu byłby gotowy poprawiony projekt do wgrania. Poniżej cały kod i tutaj jeszcze link do pliku https://megawrzuta.pl/download/74a3250e9fe795eeb89679444c66bf79.html?fbclid=IwAR2eY0bQzpt7RscoNmSTp7MbZ5qHuItvkvDPIuXbUC4uA8lGQbl-yaDfXOQ RE: Wyświetlacz biegów w motocyklu - reactor - 04-08-2020 #include <DallasTemperature.h> //#include <Adafruit_SSD1306.h> #include <DallasTemperature.h> #include <OneWire.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #define LOGO16_GLCD_HEIGHT 16 #define LOGO16_GLCD_WIDTH 16 static const unsigned char PROGMEM logo16_glcd_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 }; #if (SSD1306_LCDHEIGHT != 32) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif #define ONE_WIRE_BUS 8 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { display.setRotation(2); Serial.begin(9600); sensors.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(0,0); display.println(" DL650"); display.setTextColor(BLACK, WHITE); // 'inverted' text display.setTextSize(1); display.setTextColor(WHITE); display.print(" "); display.println(" Witaj "); display.display(); delay(2500); display.clearDisplay(); sensors.requestTemperatures(); } int pb=0; int bieg=0; unsigned long odczyt; unsigned long odczyt2; int od1=0; int od2=0; float tem=0.0; int tem1=0; int tem2=0; //********************************************** int wej_biegi=0; void loop() { display.setRotation(2); delay(5); tem=sensors.getTempCByIndex(0); tem1=round(tem); tem2=(round(tem*100))%100; //********************************************** wej_biegi=analogRead(A0); //odczyt = (((long)wej_biegi)*2*5000)/1023; /* if (odczyt>4990 && odczyt<=5200) {bieg=0;} else if (odczyt>1340 && odczyt<=1420) {bieg=1;} else if (odczyt>1700 && odczyt<=1850) {bieg=2;} else if (odczyt>2460 && odczyt<=2540) {bieg=3;} else if (odczyt>3160 && odczyt<=3300) {bieg=4;} else if (odczyt>4010 && odczyt<=4450) {bieg=5;} else if (odczyt>4450 && odczyt<=4650) {bieg=6;} else {} */ /* if (wej_biegi>1000 && wej_biegi<=1023) {bieg=0;} else if (wej_biegi>250 && wej_biegi<=310) {bieg=1;} else if (wej_biegi>320 && wej_biegi<=380) {bieg=2;} else if (wej_biegi>510 && wej_biegi<=570) {bieg=3;} else if (wej_biegi>640 && wej_biegi<=700) {bieg=4;} else if (wej_biegi>810 && wej_biegi<=870) {bieg=5;} else if (wej_biegi>910 && wej_biegi<=1023) {bieg=6;} else {} */ if (wej_biegi>1000 && wej_biegi<=1023) {bieg=0;} else if (wej_biegi>0 && wej_biegi<=315) {bieg=1;} else if (wej_biegi>315 && wej_biegi<=445) {bieg=2;} else if (wej_biegi>445 && wej_biegi<=605) {bieg=3;} else if (wej_biegi>605 && wej_biegi<=755) {bieg=4;} else if (wej_biegi>755 && wej_biegi<=890) {bieg=5;} else if (wej_biegi>890 && wej_biegi<=1023) {bieg=6;} else {} if(bieg==0 && pb>=4){bieg=6;} pb=bieg; odczyt2 = ((long)analogRead(A1)*5000)/1023; //odczyt2=odczyt2*3; //przeskalowanie wynikajÄ…ce z dzielnika rezystorowego 1/3 odczyt2=(unsigned long)(round((double)odczyt2*4.3)); //przeskalowanie wynikajÄ…ce z dzielnika rezystorowego 1k/3.3k od1=round(odczyt2/1000); od2=round((odczyt2%1000)/10.0); display.clearDisplay(); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(0,0); if (bieg==0) {display.print("N");} else {display.print(bieg, DEC);} display.setTextSize(2); display.setCursor(40,4); display.print(od1,DEC); display.print("."); display.print(od2,DEC); display.print(" V"); //********************************************** //Tu wyĹ›witlamy wartość z wejĹ›cia od biegĂłw //display.setTextSize(1); // display.setCursor(5,25); //display.print(wej_biegi,DEC); //display.setTextSize(1); //********************************************** //PrzesĂłwam nieco w prawo wyĹ›wieltanie temperatury display.setCursor(70,25); display.print(tem1,DEC); display.print("."); display.print(tem2,DEC); display.print(" C"); display.display(); sensors.requestTemperatures(); delay(15); } void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { uint8_t icons[NUMFLAKES][3]; // initialize for (uint8_t f=0; f< NUMFLAKES; f++) { icons[f][XPOS] = random(display.width()); icons[f][YPOS] = 0; icons[f][DELTAY] = random(5) + 1; Serial.print("x: "); Serial.print(icons[f][XPOS], DEC); Serial.print(" y: "); Serial.print(icons[f][YPOS], DEC); Serial.print(" dy: "); Serial.println(icons[f][DELTAY], DEC); } while (1) { // draw each icon for (uint8_t f=0; f< NUMFLAKES; f++) { display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); } display.display(); delay(200); // then erase it + move it for (uint8_t f=0; f< NUMFLAKES; f++) { display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); // move it icons[f][YPOS] += icons[f][DELTAY]; // if its gone, reinit if (icons[f][YPOS] > display.height()) { icons[f][XPOS] = random(display.width()); icons[f][YPOS] = 0; icons[f][DELTAY] = random(5) + 1; } } } } void testdrawchar(void) { display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); for (uint8_t i=0; i < 168; i++) { if (i == '\n') continue; display.write(i); if ((i > 0) && (i % 21 == 0)) display.println(); } display.display(); delay(1); } void testdrawcircle(void) { for (int16_t i=0; i<display.height(); i+=2) { display.drawCircle(display.width()/2, display.height()/2, i, WHITE); display.display(); delay(1); } } void testfillrect(void) { uint8_t color = 1; for (int16_t i=0; i<display.height()/2; i+=3) { // alternate colors display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2); display.display(); delay(1); color++; } } void testdrawtriangle(void) { for (int16_t i=0; i<min(display.width(),display.height())/2; i+=5) { display.drawTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, WHITE); display.display(); delay(1); } } void testfilltriangle(void) { uint8_t color = WHITE; for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) { display.fillTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, WHITE); if (color == WHITE) color = BLACK; else color = WHITE; display.display(); delay(1); } } void testdrawroundrect(void) { for (int16_t i=0; i<display.height()/2-2; i+=2) { display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, WHITE); display.display(); delay(1); } } void testfillroundrect(void) { uint8_t color = WHITE; for (int16_t i=0; i<display.height()/2-2; i+=2) { display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color); if (color == WHITE) color = BLACK; else color = WHITE; display.display(); delay(1); } } void testdrawrect(void) { for (int16_t i=0; i<display.height()/2; i+=2) { display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE); display.display(); delay(1); } } void testdrawline() { for (int16_t i=0; i<display.width(); i+=4) { display.drawLine(0, 0, i, display.height()-1, WHITE); display.display(); delay(1); } for (int16_t i=0; i<display.height(); i+=4) { display.drawLine(0, 0, display.width()-1, i, WHITE); display.display(); delay(1); } delay(250); display.clearDisplay(); for (int16_t i=0; i<display.width(); i+=4) { display.drawLine(0, display.height()-1, i, 0, WHITE); display.display(); delay(1); } for (int16_t i=display.height()-1; i>=0; i-=4) { display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); display.display(); delay(1); } delay(250); display.clearDisplay(); for (int16_t i=display.width()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); display.display(); delay(1); } for (int16_t i=display.height()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); display.display(); delay(1); } delay(250); display.clearDisplay(); for (int16_t i=0; i<display.height(); i+=4) { display.drawLine(display.width()-1, 0, 0, i, WHITE); display.display(); delay(1); } for (int16_t i=0; i<display.width(); i+=4) { display.drawLine(display.width()-1, 0, i, display.height()-1, WHITE); display.display(); delay(1); } delay(250); } void testscrolltext(void) { display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(10,0); display.clearDisplay(); display.println("scroll"); display.display(); delay(1); display.startscrollright(0x00, 0x0F); delay(2000); display.stopscroll(); delay(1000); display.startscrollleft(0x00, 0x0F); delay(2000); display.stopscroll(); delay(1000); display.startscrolldiagright(0x00, 0x07); delay(2000); display.startscrolldiagleft(0x00, 0x07); delay(2000); display.stopscroll(); } RE: Wyświetlacz biegów w motocyklu - kaczakat - 05-08-2020 DallasTemperature.h: No such file or directory - nie masz tej biblioteki. Wejdź w manager bibliotek i dodaj, to popularna biblioteka jest online. Czasami, z czasem, biblioteki mogą przestać działać ze sobą, te najlepsze są ciągle rozwijane, dodawane są nowe funkcje, jakieś są modyfikowane lub nawet usuwane.. Dlatego te pewne projekty mają podane, że skompilowano w wersji Arduino 1.5 i wszystkie potrzebne biblioteki zewnętrzne są dołączone. Oczywiście jak ktoś wie, gdzie grzebnąć kopytkiem to nie jest problem. No i w załączniku masz gotowy, skompilowany projekt, wystarczy tego hex'a wgrać do Arduino. RE: Wyświetlacz biegów w motocyklu - reactor - 05-08-2020 Bardzo dziękuję! Wszystko zrozumiałem, zaktualizowałem i działa! PS: Po aktualizacji biblioteki Dallas trzeba było jeszcze pełno innych bibliotek zaktualizować i wszystko było już ok i bez problemów! |