Skocz do zawartości

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


Pomocna odpowiedź

Napisano
#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?

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ń.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...