вольтметр на arduino nano и SSD1306 дисплее
- Войдите на сайт для отправки комментариев
Чт, 22/06/2017 - 05:16
прошу помощи, я начинающий, прошу не бить )
суть проблемы- пытаюсь создать простейший вольтметр на nano и SSD1306
до этого выводил изображение на экран, все получилось. Но вот при компиляции кода на вольтметр постоянно выскакивает проблема с VOID SETUP а точнее со строками, в которых описывается операция с дисплеем, пытался удалять, переставлять, но все четно!( ошибка одна и также (exit status 1
'display' was not declared in this scope)
знающие люди, ткните носом что я не так делаю, очень хочу научиться программировать arduio но - пока только ломаю голову !
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 int analogInput = 0; // переменная для удобства инициализации и работы с аналог. портом 0 float vout = 0.0; // переменная с значением выходного напряжения float vin = 0.0; // переменная с результатом измерений float R1 = 100000.0; // сопротивление R1 float R2 = 10000.0; // сопротивление R2 int value = 0; // переменная хранения данных void setup(){ Serial.begin(9600); pinMode(analogInput, INPUT); // инициализируем аналоговый порт 0, как вход display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Hello, world!"); display.setTextColor(BLACK, WHITE); // установка курсора } void loop() // производим чтение аналогового сигнала и выводим на дисплей { value = analogRead(analogInput);// читаем аналоговый сигнал, с аналог. порта - 0 vout = (value * 5.0) / 1024.0; // не забываем про внесение поправки (5.0 - это идеальный вариант,хотя все возможно) vin = vout / (R2/(R1+R2)); // в переменной будет значение входного напряжения if (vin<0.09) // проверка, для получ. 0 { vin=0.0; // обнуляем нежелательное значение } void loop() display.println("U = ","vin","volt"); delay(500); // задержка 500 мс. }
где и как описана/объявлена переменная display?
в VOID SETUP
начина вот с этой строки
display.setTextSize(1);
это использование (обращение к) переменной. А объявление где? Какого она типа?
и пошто 2 раза void loop() написано?
прошу простить за тупость обьявление к чему должно относиться ?!
действительно 2 void loop(((
убрал его теперь придерается к
display.println("U = ","vin","volt");
пишет - 'display' was not declared in this scope
к переменной display
вот это
int
analogInput = 0;
// переменная для удобства инициализации и работы с аналог. портом 0
08
float
vout = 0.0;
// переменная с значением выходного напряжения
09
float
vin = 0.0;
// переменная с результатом измерений
10
float
R1 = 100000.0;
// сопротивление R1
11
float
R2 = 10000.0;
// сопротивление R2
12
int
value = 0;
// переменная хранения данных
объявления. Вот это
vin = vout / (R2/(R1+R2));
// в переменной будет значение входного напряжения
использование переменных vin, vout, R1, R2, ОБЪЯВЛЕННЫХ ранее
все-же я тормоз, я вроде понимаю что вы имеете в виду, но понять не могу как правильно сформулировать в прошивке, если вам не трудно- можете иправить ошибку, что-бы я наконец-то увидел?
я учусь по статьям и готовым прошивкам и некоторые нюансы пока туго доходят (
Ёптваюмать!!! ты сам писал
"до этого выводил изображение на экран"
ну дак посмотри же прошлый код, КАКОГО ТИПА была переменная display.
в ОБЬЯВЛЕНИЯХ, между #Includ-ами и void setup(). И обьяви ты ее наконец так же.
вот все что было между ними
Adafruit_SSD1306 display(OLED_RESET);
все, больше ничего не было
и что тебе мешает вставить
Adafruit_SSD1306 display(OLED_RESET); // ОБЪЯВЛЕНИЕ ТИПА
где нить между другими обьявлениями
int
analogInput = 0;
// переменная для удобства инициализации и работы с аналог. портом 0
08
float
vout = 0.0;
// переменная с значением выходного напряжения
09
float
vin = 0.0;
// переменная с результатом измерений
10
float
R1 = 100000.0;
// сопротивление R1
11
float
R2 = 10000.0;
// сопротивление R2
12
int
value = 0;
// переменная хранения данных
Adafruit_SSD1306 display(OLED_RESET);
опять проблема с дисплеем exit status 1
на строке
нужна константа, но я не знаю как она пишится
потому что вот так надо писать
display.print("U = ");display.print("vin"); display.println("volt");
спасибо большое за помощь, все заработало
вот готовый код прошивки
нальешь при случае.