• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Uno i oled 128x64
#11
(17-11-2016, 18:28)juriii28 napisał(a): Nie , nie zaglądałem. Rozumiem że można go otworzyć w WordPad?
Wiersz 70? ciężko to policzyć. Czego mam szukać?
Nie licz, ja przyjadę i palcem wskaże który to wiersz.

Wcześniej zacytowałem komunikat błędu który mówi co jest źle w programie który kompilujesz i którego wiersza programu to dotyczy :

Cytat:ssd1306_128x64_i2c.ino:54:2: error: #error ("Height incorrect, please fix Adafruit_SSD1306.h!");


A tak wygląda to wprogramie:
Kod:
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif


Jeśli nie wiesz co to znaczy to proponuję odłożyć na tydzień arduino i przeczytać dowolny podręcznik programowania w c++ a wtedy wszystko nagle stanie się proste.

PS
W arduino można włączyć numerację wiersZy a ten plik też pewnie otworzy.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#12
Włączyłem numeracje wierszy w arduino, tylko jak odpalić ten plik H w arduino żeby zobaczyć co jest w tym 70 wierszu?
ok. odpaliłem plik w arduino.
w wierszu 70 jest:

#define SSD1306_128_32

Już zrobiłem Big Grin . Zmieniłem 32 na 64, zapisałem zmiany w pliku i pod mieniłem plik w folderze ssd1306. Potem wgrałem od nowa całą biblioteke, i wgrałem program. Działa idealnie
 
Odpowiedź
#13
Witam!
Odświeżę temat choć może trochę inny.

Do solar trackera chcę dobudować anemometr z przekaźnikiem , który po przekroczeniu ustawionego progu wiatru załączy wypłaszczenie baterii PV.
Użyłem gotowego kodu dla anemometru z czujnikiem Halla, dopisałem komendę dla załączenia przekaźnika ale nie potrafię wstawić czasu zwłoki wyłączenia przekaźnika po tym jak wiatr ustanie.
Proszę Was o pomoc.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define am 8 //anemometer is connected to pin 8 with pulldown resistor

int pinOut = 10;
int cnt = 0; //counter
int rot = 0; // number of rotations

boolean stan = 0; //state of anemometer -open or closed
float wind;

void setup() {
  pinMode (am, INPUT);
  pinMode(10, OUTPUT);
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();

}

void loop() {
  cnt = cnt + 1;
  if (digitalRead(am) == LOW) { //I've checked that on free position anemometer is always closed
    delay(2);
    stan = !stan;
    while (digitalRead(am) == LOW) ;
    rot = rot + 1 ;
  }

  if (cnt == 100) {
    int czas1 = millis();
    wind = rot * 2.40114; ///5;  //equation calculating average speed of the wind in 3 sec intervals
    Serial.println(rot);
    Serial.print("WIATR = ");
    Serial.print(wind, 2);
    Serial.println(" km/h");
    cnt = 0; //counter reset
    rot = 0; //rotation number reset
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(30, 0);
    display.println("WIATR");
    display.setTextSize(2);
    display.setCursor(2, 15);
    display.print(wind, 2);
    display.setTextSize(2);
    display.println(" km/h");
    display.display();
    int czas2 = millis();
    int czas = czas2 - czas1;
    Serial.println(czas);
  }
  if (wind > 6) {
    digitalWrite (10, HIGH);  // załączenie przekaźnika po przekroczeniu progu nastawionego wiatru
  }
  else
  {
    digitalWrite (10, LOW);  // wyłaczenie przekaźnika po spadku siły wiatru
  }
  delay(8);//elay is put here to extend time of whole loop to 10ms
}
 
Odpowiedź
#14
Naucz się używać millis, masz przykład w Arduino gdzie zmieniasz stan led co 1s, zamiast zmieniać stan led możesz zwiększać co 1s zmienną i masz licznik sekund, taki licznik sekund też można porównywać, zerować, zapisać do innej zmiennej w wybranym momencie, np. gdy wykryjesz ustanie wiatru ustawiasz zmienną wylaczanie =1 i zapisać licznik sekund, else wylaczanie =0, jeśli wylaczanie =1 sprawdź czy minęło X sekund, jeśli tak wyłącz.
Wywal wszystkie delay z kodu, tym samym sposobem możesz odświeżać ekran co 1s, czy co 50ms, robienie więcej niż 20fps na tym ekranie nie ma większego sensu, chyba że wysyłasz wybrany fragment ekranu dla jakiejś animacji w celu "sztuka dla sztuki".
 
Odpowiedź
#15
Ok, dzięki za informacje.
Przypuszczałem, że powinienem użyć millis.
Podszkolę się i podziałam.
Na pewno będę dopytywał.
Pozdrawiam

No i się udało.
Kod działa , po przekroczeniu progu wiatru, przekaźnik się załącza i po upływie nastawionego czasu przekaźnik się wyłącza jak wiatr osłabnie oczywiście.

Teraz będę próbował dodać potencjometr z nastawą progu wiatru i czasem działania przekaźnika.

Kolego "kaczakat" dziękuję za wskazówkę no i masz u mnie duży tymbark :-)
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości