Устранил замечания. Добавил второй датчик температуры, некоторые настройки часов (все внутри в описании). Как сделать настройка цвета температуры чтоб настраивалась из прошивки или часов.
Вложения
-
26.3 KB Просмотры: 218
Вячеслав это Вы сами придумали или как?@bort707, на заметку строка
led_color = color_table[set_color - 1];
при set_color = 0 ошибку не вызывает, просто led_color = последнему элементу массива color_table [ ]
byte a[] = {11,21,31,41,51,55};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
byte element =0;
Serial.print("Element #-1 =");
Serial.println(a[element-1]);
}
void loop() {}
Element #-1 =184
Ну такое использование указателей скорей можно отнести к "грязным хакам", поскольку очень легко можно запутаться самому и получить распашку памятиНу в некоторых случаях такое может быть, но скорее эти случаи исключения и хаки. например если в массиве 256 элементов, а указатель имеет тип uint8_t. Но такое чревато...
Простите, но Вы сейчас именно спорите. Вы пример-то запускали? Можете попробовать запустить его не в Ардуино, а например в любом компиляторе С на винде или в линуксе.Спорить не буду. Может Ардуино IDEпри компиляции что-то подправляет.
эта ошибка вылезет не при любом запуске, а только после полного сброса, когда вы в ЕЕПРОМ пишете нули.Просто написал по факту как было и как работало.
Извините пожалуйста, а эта прошивка на 2 датчика рабочая или бета версия???И там отображение "ДОМ (С)", а "УЛИЦА (0)", как выше на картинках которые , я рисовал??? А то уже ручки чешутся вкрутить второй датчикУстранил замечания. Добавил второй датчик температуры, некоторые настройки часов (все внутри в описании). Как сделать настройка цвета температуры чтоб настраивалась из прошивки или часов.
Так второй датчик не мешает же, в настройках можно выбрать вариантыдавайте с одним датчиком допилим прошивку а потом и со вторым
PIN 10 // pin комнвтного датчика температуры DS18B20 только плюсовая до десятыха вешается второй параллельно ?
Можно замкнуть вывод А0 на +5в и будет максимальная яркостьВсем привет!!! Может для кого-то покажется глупым мой вопрос, уточню, я в программирование не чего не понимаю.
Возможно ли осуществить память настроек?
а то при моей первой сборки часов, я не ставил фоторезистор, и когда произошёл сбой по питанию (отключили свет), то я аж испугался когда часы потухли, думал всё кабздец пришёл, а оказалось, что по умолчании в настройках стоит яркость на 0, и её нужно было добавить, еще цвет стал меняться каждую минуту, и отображении даты и температуры раз в минуту
Спасибо большое, я поставил фоторезистор "так надёжнее"Можно замкнуть вывод А0 на +5в и будет максимальная яркость
void DigitOut(int cursors, int digit){ // Функция вывода на диоды
int cursor = cursors;
for(int k = 0; k <= 6; k++){
if (digits[digit][k] == 1){
for(int i = 1; i <= num_point; i++){leds[cursor] = led_color; cursor++;}}
else if (digits[digit][k] == 0){
for(int i = 1; i <= num_point; i++){leds[cursor] = 0x000000; cursor++;}
}}}
uint8_t digits[] = {
0b00111111, // Digit 0
0b00100001, // Digit 1
0b01110110, // Digit 2
0b01110011, // Digit 3
0b01101001, // Digit 4
0b01011011, // Digit 5
0b01011111, // Digit 6
0b00110001, // Digit 7
0b01111111, // Digit 8
0b01111011, // Digit 9
0b01111000, // Digit * градус 10
0b00011110, // Digit C 11
0b01111100, // Digit P 12
0b01111000, // Digit % знак % из двух частей 13
0b01000111, // Digit % знак % из двух частей 14
0b00000000 // Blank
};
void BrightDigit (uint8_t digit, uint8_t cursor)
{
for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1)
{
for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++)
{
leds[cursor] = (digit & mask) ? ledColor : 0;
cursor ++;
}
}
}
#include <iarduino_Pressure_BMP.h>
iarduino_Pressure_BMP sensorTempHome(0x76);
---------------------------
case 20: { // Режим вывода температуры внутри
if(temp_flag == false){
sensorTempHome.begin();
Serial.println (sensorTempHome.temperature);
----------------------------
-135.36
-135.36
-135.36
#define max_bright 100 // максимальная яркость (0 - 255)
#define min_bright 10 // минимальная яркость (0 - 255)
#define bright_constant 1000 // константа усиления от внешнего света (0 - 1023), чем МЕНЬШЕ константа, тем "резче" будет прибавляться яркость
#define coef 0.1 // коэффициент фильтра (0.0 - 1.0), чем больше - тем медленнее меняется яркость
void BrightnessCheck() {
if (auto_bright) {
if (millis() - bright_timer > 100) {
bright_timer = millis();
new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);
new_bright = constrain(new_bright, max_bright, min_bright); //поменял местами max и min
new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
LEDS.setBrightness(new_bright_f);}}};
void BrightnessCheck(){
const byte sensorPin = A0;
const byte brightnessLow = 5; // низкая яркость
const byte brightnessMid = 10; // низкая яркость
const byte brightnessHigh = 40; // высокая яркость
const byte brightnessDay = 60; // высокая яркость
int sensorValue = analogRead(sensorPin);
sensorValue = map(sensorValue, 0, 1023, 0, 255);
LEDS.setBrightness(sensorValue);
//если в комнате светло, то светит ярче, если мало света, то тусклее, в ночном режиме светит тускло
if(sensorValue>=221 && sensorValue <=240){LEDS.setBrightness(brightnessHigh);delay(1000);}
else
if(sensorValue>=241 && sensorValue <=252){LEDS.setBrightness(brightnessMid);delay(1000);}
else
if(sensorValue>=253){LEDS.setBrightness(brightnessLow);delay(1000);}
else
if(sensorValue<=220){LEDS.setBrightness(brightnessDay);delay(1000);}};
if(sensorValue>=101 && sensorValue <=200){LEDS.setBrightness(brightnessHigh);delay(1000);}
else
if(sensorValue>=201 && sensorValue <=252){LEDS.setBrightness(brightnessMid);delay(1000);}
else
if(sensorValue>=253){LEDS.setBrightness(brightnessLow);delay(1000);}
else
if(sensorValue<=100){LEDS.setBrightness(brightnessDay);delay(1000);}};