Arduino Battery Capacity Tester - V2.0
- Войдите на сайт для отправки комментариев
Сб, 20/03/2021 - 14:48
Всем привет
есть проект Arduino Battery Capacity Tester - V2.0, https://www.instructables.com/DIY-Arduino-Battery-Capacity-Tester-V20/
в проекте используется дислпей 0.96 ssd1306, а мне необходимо заменить его на 1.3 sh1106, установил все нужные библиотеки , в том числе U8glib.h но как именно правильно вписать данные для sh1106 я не понимаю, прошу помощи!
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // ARDUINO BATTERY CAPACITY TESTER //Version-2.0 //by deba168,INDIA // The code is taken from Hesam Moshiri ( https://www.pcbway.com/blog/technology/Battery_capacity_measurement_usin... ) //Dated : 20/10/2019 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #include<JC_Button.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const float Low_BAT_level = 3.0; //Current steps with a 3R load (R7) const int Current [] = {0,110,210,300,390,490,580,680,770,870,960,1000}; const byte PWM_Pin = 10; const byte Buzzer = 9; const int BAT_Pin = A0; int PWM_Value = 0; unsigned long Capacity = 0; int ADC_Value = 0; float Vcc = 4.96 ; // Voltage of Arduino 5V pin ( Mesured by Multimeter ) float BAT_Voltage = 0; float sample =0; byte Hour = 0, Minute = 0, Second = 0; bool calc = false, Done = false; Button UP_Button(2, 25, false, true); Button Down_Button(3, 25, false, true); void setup () { // Serial.begin(9600); pinMode(PWM_Pin, OUTPUT); pinMode(Buzzer, OUTPUT); analogWrite(PWM_Pin, PWM_Value); UP_Button.begin(); Down_Button.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(12,25); display.print("Open Green Energy"); display.display(); delay(3000); display.clearDisplay(); display.setTextSize(2); display.setCursor(2,15); display.print("Adj Curr:"); display.setCursor(2,40); display.print("UP/Down:"); display.print("0"); display.display(); } //************************* End of Setup function ******************************* void loop() { UP_Button.read(); Down_Button.read(); if (UP_Button.wasReleased() && PWM_Value < 55 && calc == false) { PWM_Value = PWM_Value + 5; analogWrite(PWM_Pin,PWM_Value); display.clearDisplay(); display.setCursor(2,25); display.print("Curr:"); display.print(String(Current[PWM_Value / 5])+"mA"); display.display(); // Serial.println(String(Current[PWM_Value / 5])); } if (Down_Button.wasReleased() && PWM_Value > 1 && calc == false) { PWM_Value = PWM_Value - 5; analogWrite(PWM_Pin,PWM_Value); display.clearDisplay(); display.setCursor(2,25); display.print("Curr:"); display.print(String(Current[PWM_Value / 5])+"mA"); display.display(); // Serial.println(String(Current[PWM_Value / 5]) + "mA"); } if (UP_Button.pressedFor (1000) && calc == false) { digitalWrite(Buzzer, HIGH); delay(100); digitalWrite(Buzzer, LOW); display.clearDisplay(); timerInterrupt(); } } //************************* End of Loop function ******************************* void timerInterrupt(){ calc = true; while (Done == false) { Second ++; if (Second == 60) { Second = 0; Minute ++; } if (Minute == 60) { Minute = 0; Hour ++; } //************ Measuring Battery Voltage *********** for(int i=0;i< 100;i++) { sample=sample+analogRead(BAT_Pin); //read the Battery voltage delay (2); } sample=sample/100; BAT_Voltage = sample * Vcc/ 1024.0; //********************************************* display.clearDisplay(); display.setTextSize(2); display.setCursor(20,5); display.print(String(Hour) + ":" + String(Minute) + ":" + String(Second)); display.setTextSize(1); display.setCursor(0,25); display.print("Disch Curr: "); display.print(String(Current[PWM_Value / 5])+"mA"); display.setCursor(2,40); display.print("Bat Volt:" + String(BAT_Voltage)+"V" ); Capacity = (Hour * 3600) + (Minute * 60) + Second; Capacity = (Capacity * Current[PWM_Value / 5]) / 3600; display.setCursor(2, 55); display.print("Capacity:" + String(Capacity) + "mAh"); display.display(); if (BAT_Voltage < Low_BAT_level) { Capacity = (Hour * 3600) + (Minute * 60) + Second; Capacity = (Capacity * Current[PWM_Value / 5]) / 3600; display.clearDisplay(); display.setTextSize(2); display.setCursor(2,15); display.print("Capacity:"); display.setCursor(2,40); display.print(String(Capacity) + "mAh"); display.display(); Done = true; PWM_Value = 0; analogWrite(PWM_Pin, PWM_Value); digitalWrite(Buzzer, HIGH); delay(100); digitalWrite(Buzzer, LOW); delay(100); digitalWrite(Buzzer, HIGH); delay(100); digitalWrite(Buzzer, LOW); delay(100); } delay(1000); } }
nik82av
В папке с библиотекой подпапка examples с кучей примеров. Есть и готовые инициализаторы для огромного количества дисплеев. Выбирайте нужный. Короче, если вам этого недостаточно, вам сложно помочь будет
я знаю какой дислпей выбрать, что дальше?, куда эти строчки прописывать? мне достаточно, чтобы ткнули пальцем, куда именно и что прописать, что бы заработал скетч, больше я ничего не прошу. я не программист и особого желания постигать это у меня нет, я врач по профессии и ваши слова примерно так же бы прозвучали у меня на приеме, "вот в нужной книге множество примеров заболеваний, если вам этого не достаточно, то вам сложно помочь с лечением"
я не программист и особого желания постигать это у меня нет,
Вы людей так-же лечите? Звонит вам человек: Николай Иваныч, у меня в правом боку колет и в спину отдает! А вы ему: не волнуйтесь Сергей Сергеич, набирайте таз теплой воды, берите острый нож, замахните стакан - сейчас будем удалять! Не кладите трубку, буду диктовать что делать...
Короче, либо наймите специалиста, либо выбросьте эту блажь из головы и занимайтесь чем умеете
бред...... не вам судить о том как я лечу, тем более по телефону, смешно даже это читать!, а о вашей "помощи" из вашего ответа, уже можно сделать выводы! нечего сказать или помочь, проходите мимо! Уверен, найдутся спецы которые искренне смогут помочь, без дурных намеков
Зачем «оно» Вам, ТС? Это не работа и, как я понял, не хобби. Зачем мучиться? Мазохизм?)
радиоэлетроника хобби, ардуино лишь необходимость, чтобы повторить конструкцию...
В марте вы уже третий или четвертый врач тут... Может у другие были, не знаю, они своей профессиональной принадлежностью свою лень и нежелание учиться не прикрывали
радиоэлетроника хобби, ардуино лишь необходимость, чтобы повторить конструкцию...
Вам будет сильно проще сразу обратиться в платный раздел форума. Там вам минут за 15 ваш код поправят, вопрос то у вас пустяковый совсем.
ни ленью , ни профессией ни прикрываюсь, где вы это прочли? я честно сказал, что изучать не буду, и попросил помочь, где и какую строку изменить, что бы дисплей заработал
так бы сразу и сказали.... про платный форум
45 строка - медитируйте до понимания....
45 строка - медитируйте до понимания....
У него в коде i2c, а надо для SPI. Там дофига чего медитировать нужно будет
я знаю какой дислпей выбрать, что дальше?, куда эти строчки прописывать? мне достаточно, чтобы ткнули пальцем, куда именно и что прописать, что бы заработал скетч, больше я ничего не прошу. я не программист и особого желания постигать это у меня нет, я врач по профессии и ваши слова примерно так же бы прозвучали у меня на приеме, "вот в нужной книге множество примеров заболеваний, если вам этого не достаточно, то вам сложно помочь с лечением"
А Ваша просьба звучит примерно так, как если бы на приёме Вы услышали от пациента: "мне достаточно, чтобы ткнули пальцем, где именно и что разрезать, чтобы аппендикс не болел, больше я ничего не прошу, я не врач особого желания постигать это у меня нет. Скальпель у меня есть".
Вам не смешно?
Здесь помогают тем у кого есть особое желание постигать - тем, для кого это является увлечением. Если у Вас нет желания, обратитесь в коммерческий раздел, Вам сделают за небольшие деньги.
У него в коде i2c, а надо для SPI. Там дофига чего медитировать нужно будет
Возможно... Схемы мы не видели. Но на 16-ю строку тоже стоит помедитировать...
Возможно... Схемы мы не видели. Но на 16-ю строку тоже стоит помедитировать...
Как я понял самое первое сообщение, ТСу нужно заменить в один интерфейс дисплея на другой, но сам он это делать не хочет (ибо негоже Доктору всяким таким непотребством заниматься). Поэтому выложил исходный чужой код и ждет добровольцев, кто за него все сделает.
автор. ну реально же самому разобраться. Все хотят результата и быстро. а загуглить и потестить и сделать самому никто не хочет. да уж
Поэтому выложил исходный чужой код и ждет добровольцев, кто за него все сделает.
Как в том анекдоте:
- Доктор, я умру?
- А как-же! :)