Skocz do zawartości

Mam problem z kodem ktorego odpowiednik w Visual Studio działa.


Igordela

Pomocna odpowiedź

#include "Arduino.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

}
void setup1(){
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(40,0);
 display.println("Select:");
 display.setCursor(0,9);
 display.println("A - Temperature");
 display.setCursor(0,18);
 display.println("B - CO2");
 display.setCursor(0,27);
 display.println("C - Humidity");
}
String Tread = "T 01235";

double Changing(String Answer ){

 char a =Answer[4];
 char b =Answer[5];
 char c =Answer[6];
 double d = (double)(a -'0');
 double e = (double)(b -'0');
 double f = (double)(c -'0');
  double check = 10 * d + e + 0.1 * f;
  return check;
}

char button = 'A';


void loop() {
if (button == 'A'){
 for (int i =0; i<10; i++){
 display.clearDisplay();
 display.setTextSize(2);
 display.setTextColor(WHITE);
 display.setCursor(10,10);
 display.print(Changing(Tread));
 display.print(" C");
 delay (2000);
 setup1();
 delay (500);

}
}

t

Efekt pożądany jest taki zeby pokazywalo temperature, zniknelo i pokazalo funkcje setup1, zniknelo i pokazywalo temperature itd itd itd itd ale przy takim kodzie pokazuje mi tylko i wylacznie funkcje setup1. Jak wklejalem ten kod do Visual Studio to wszystko gralo perfekcyjnie. Stad moje pytanie do was, czy widzicie co jest zle? Czy problem moze miec inne podloze niz kod?

Link do komentarza
Share on other sites

Odpiszę z obawą, bo są tu rzeczy, których nie rozumiem... Najwyżej wyjdę na głąba. Jeśli używasz biblioteki do OLED, po której znika 1kb ramu, to ona robi bufor w pamięci i wszystkie polecenia zmieniają tylko ten bufor, wyrzucenie go na ekran robi funkcja display.display(), po tym jak już sobie "ułożysz" wygląd całego ekranu w buforze. Sporo bibliotek tak robi. A tak poza tym to OLED_RESET to jakiś pin? Zwykle wstawiam tu jakąś bzdurną liczbę, by przypadkiem biblioteka nie próbowała coś robić na pinie 4, reset dla IC2 i tak chyba nie ma. No i w AVR nie ma double (64bity), to i tak tylko float (32bity), jakbyś ten kod uruchamiał na ESP8266 lub jakimś armie to pewnie jest różnica w dokładności obliczeń.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.