Если б я был султан программист, я бы сделал так: каждую минуту при смене единиц минут происходит перебор всех цифр во всех лампах в течение одной секунды (первой секунды новой минуты).
woddy А я чувствую, что еще не созрел для ИН-18. Солидным лампам - хорошую схему и классный корпус, не иначе. А пока потренируюсь на мелких часиках и их корпусах.
Если не подведет почта и доставит все нужные запчасти, то до нового года доделаю изделие на панаплексах.
Кстати про корпуса. СпойлерКогда-то был разговор про гибку оргстекла. Так вот, я научился это делать. Гнул не феном, как многие советовали, а над горячей проволокой. В зависимости от толщины материала и требуемого радиуса, расстояние от проволоки до стекла может быть 3-10мм, нагрев проволоки - от еле заметного до ярко-красного. И хорошо бы иметь прижим-уголок, который обеспечит равномерный загиб по всей ширине на нужный угол. Вот изделие, толщина 5мм (это пандус в аквариум для водяной черепахи):
Правильно заданный вопрос - уже половина ответа. Не мучайте себя и других...
------
Полезный лайфхак - чтобы увидеть картинку в оригинальном размере, удалите из адреса слово medium/
Например: http:///img.radiokot.ru/files/86369/medium/hi06i91ui.jpg
Если б я был султан программист, я бы сделал так: каждую минуту при смене единиц минут происходит перебор всех цифр во всех лампах в течение одной секунды (первой секунды новой минуты).
это делается очень просто и если вы делаете клон чьего-то проекта, то можно попросить автора сделать столь не сложное обновление ПО.
я именно так и планирую делать, и в большей степени из-за эстетически красивого эффекта. но перебор лучше делать не всех разрядов сразу, а так же последовательно. я подобное делал на 7 сегментных индикаторов - пробегающей змейкой или перезаписью слева-направо (справа-налево) т.е. сначала 2 вертикальных сегмента, затем 3 горизонтальных, после снова 2 вертикальных и так следующий разряд. получалось довольно интересно.
Если б я был султан... я бы сделал ... каждую минуту... в течение одной секунды.......
Вам не кажется что служебные операции показывать во время пользования это будет введение в заблуждения. Мне кажется что встрАх разумннее делать разок в ночь. Если мне не изменяет память. В времена 1-ой холодной войны на радиостанциях Р-155П была процедура встряхнуть что-то там мудреное такое" положение переключателя.. такого-то кнопку такую-то 3 раза нажать 3 раза отпустить" индикации производили перебор. Ты смотрел и принимал решение заменить лампочки из ЗИП-а или нет. И был раз в сутки автоматом. Причем прием не прерывался.
Хотя любой недостаток можно разрекламировать как фичу.
Вот накропал только что.
clock.getTime();// ходики гэй время сколько
int hh=clock.hour;int mm=clock.minute; int ss=clock.second; // быстренько даложить разложить по полочкам часы минуты секундочки
if(hh=='00'&&mm=='00'&&ss=='00') Set_vstryahnut_moshami(Set_K155ID1_razryad1_cifra1(0,0));//встряхнем старину
Написать что-нибудь такое. Например
Во время рева будильника идиотизмом на цифрах поиздеваться над просыпающимся.
Уважаемые гуру подскажите, пожалуйста.
Попросил знакомого достать ГРИ он нашёл ИН12, но сказал, что есть ещё, большие лампы по размерам напоминает 6Д20П, что это может быть?
ИН18?
Собрал платку. Все чипы поставил кроме контроллера. Проверил. Обнаружил такую неприятную вещь. К1109КН2 дает засветку соседней лампы. Те я подаю 1 только на один ее канал, но при этом - засвечивается и соседняя лампа. Мерию на аноде лампы которая не должна светиться - от 150В. Сначала думал монтаж - нет, без КНки все хорошо. Причом, засвечивается только соседний канал, на остальных лампах 0. Питание 220 от преобразователя.
Полудохлая? Есть аналог буржуйский?
/*
* DS1307.h
* library for Seeed RTC module
*
* Copyright (c) 2013 seeed technology inc.
* Author : FrankieChu
* Create Time : Jan 2013
* Change Log :
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef __DS1307_H__
#define __DS1307_H__
#include <Arduino.h>
#define DS1307_I2C_ADDRESS 0x68
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
class DS1307
{
private:
uint8_t decToBcd(uint8_t val);
uint8_t bcdToDec(uint8_t val);
public:
void begin();
void startClock(void);
void stopClock(void);
void setTime(void);
void getTime(void);
void fillByHMS(uint8_t _hour, uint8_t _minute, uint8_t _second);
void fillByYMD(uint16_t _year, uint8_t _month, uint8_t _day);
void fillDayOfWeek(uint8_t _dow);
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t dayOfWeek;// day of week, 1 = Monday
uint8_t dayOfMonth;
uint8_t month;
uint16_t year;
};
#endif
/*
* DS1307.h
* library for Seeed RTC module
*
* Copyright (c) 2013 seeed technology inc.
* Author : FrankieChu
* Create Time : Jan 2013
* Change Log :
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include <Wire.h>
#include "DS1307.h"
uint8_t DS1307::decToBcd(uint8_t val)
{
return ( (val/10*16) + (val%10) );
}
//Convert binary coded decimal to normal decimal numbers
uint8_t DS1307::bcdToDec(uint8_t val)
{
return ( (val/16*10) + (val%16) );
}
void DS1307::begin()
{
Wire.begin();
}
/*Function: The clock timing will start */
void DS1307::startClock(void) // set the ClockHalt bit low to start the rtc
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00); // Register 0x00 holds the oscillator start/stop bit
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 1);
second = Wire.read() & 0x7f; // save actual seconds and AND sec with bit 7 (sart/stop bit) = clock started
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write((uint8_t)second); // write seconds back and start the clock
Wire.endTransmission();
}
/*Function: The clock timing will stop */
void DS1307::stopClock(void) // set the ClockHalt bit high to stop the rtc
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00); // Register 0x00 holds the oscillator start/stop bit
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 1);
second = Wire.read() | 0x80; // save actual seconds and OR sec with bit 7 (sart/stop bit) = clock stopped
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write((uint8_t)second); // write seconds back and stop the clock
Wire.endTransmission();
}
/****************************************************************/
/*Function: Read time and date from RTC */
void DS1307::getTime()
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
second = bcdToDec(Wire.read() & 0x7f);
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0x3f);// Need to change this if 12 hour am/pm
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}
/*******************************************************************/
/*Frunction: Write the time that includes the date to the RTC chip */
void DS1307::setTime()
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // If you want 12 hour am/pm you need to set bit 6
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
void DS1307::fillByHMS(uint8_t _hour, uint8_t _minute, uint8_t _second)
{
// assign variables
hour = _hour;
minute = _minute;
second = _second;
}
void DS1307::fillByYMD(uint16_t _year, uint8_t _month, uint8_t _day)
{
year = _year-2000;
month = _month;
dayOfMonth = _day;
}
void DS1307::fillDayOfWeek(uint8_t _dow)
{
dayOfWeek = _dow;
}
нужно?
специально спрятал для ульдемира Спойлертолько что затухание написал
женьщина пришла
все не получится дальше писать
/*
* DS1307.h
* library for Seeed RTC module
*
* Copyright (c) 2013 seeed technology inc.
* Author : FrankieChu
* Create Time : Jan 2013
* Change Log :
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef __DS1307_H__
#define __DS1307_H__
#include <Arduino.h>
#define DS1307_I2C_ADDRESS 0x68
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
class DS1307
{
private:
uint8_t decToBcd(uint8_t val);
uint8_t bcdToDec(uint8_t val);
public:
void begin();
void startClock(void);
void stopClock(void);
void setTime(void);
void getTime(void);
void fillByHMS(uint8_t _hour, uint8_t _minute, uint8_t _second);
void fillByYMD(uint16_t _year, uint8_t _month, uint8_t _day);
void fillDayOfWeek(uint8_t _dow);
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t dayOfWeek;// day of week, 1 = Monday
uint8_t dayOfMonth;
uint8_t month;
uint16_t year;
};
#endif
/*
* DS1307.h
* library for Seeed RTC module
*
* Copyright (c) 2013 seeed technology inc.
* Author : FrankieChu
* Create Time : Jan 2013
* Change Log :
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include <Wire.h>
#include "DS1307.h"
uint8_t DS1307::decToBcd(uint8_t val)
{
return ( (val/10*16) + (val%10) );
}
//Convert binary coded decimal to normal decimal numbers
uint8_t DS1307::bcdToDec(uint8_t val)
{
return ( (val/16*10) + (val%16) );
}
void DS1307::begin()
{
Wire.begin();
}
/*Function: The clock timing will start */
void DS1307::startClock(void) // set the ClockHalt bit low to start the rtc
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00); // Register 0x00 holds the oscillator start/stop bit
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 1);
second = Wire.read() & 0x7f; // save actual seconds and AND sec with bit 7 (sart/stop bit) = clock started
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write((uint8_t)second); // write seconds back and start the clock
Wire.endTransmission();
}
/*Function: The clock timing will stop */
void DS1307::stopClock(void) // set the ClockHalt bit high to stop the rtc
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00); // Register 0x00 holds the oscillator start/stop bit
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 1);
second = Wire.read() | 0x80; // save actual seconds and OR sec with bit 7 (sart/stop bit) = clock stopped
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write((uint8_t)second); // write seconds back and stop the clock
Wire.endTransmission();
}
/****************************************************************/
/*Function: Read time and date from RTC */
void DS1307::getTime()
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
second = bcdToDec(Wire.read() & 0x7f);
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0x3f);// Need to change this if 12 hour am/pm
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}
/*******************************************************************/
/*Frunction: Write the time that includes the date to the RTC chip */
void DS1307::setTime()
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((uint8_t)0x00);
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // If you want 12 hour am/pm you need to set bit 6
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
void DS1307::fillByHMS(uint8_t _hour, uint8_t _minute, uint8_t _second)
{
// assign variables
hour = _hour;
minute = _minute;
second = _second;
}
void DS1307::fillByYMD(uint16_t _year, uint8_t _month, uint8_t _day)
{
year = _year-2000;
month = _month;
dayOfMonth = _day;
}
void DS1307::fillDayOfWeek(uint8_t _dow)
{
dayOfWeek = _dow;
}
Если б я был султан программист, я бы сделал так: каждую минуту при смене единиц минут происходит перебор всех цифр во всех лампах в течение одной секунды (первой секунды новой минуты).
Но в таком случае достаточно часто происходит перебор и это немного раздражает глаз - часы постоянно мерцают карждую минуту
Не так уж и постоянно - всего 1 секунду через 59 секунд.
А вот разделительные точки или секундные индикаторы вообще непрерывно мельтешат
Правильно заданный вопрос - уже половина ответа. Не мучайте себя и других...
------
Полезный лайфхак - чтобы увидеть картинку в оригинальном размере, удалите из адреса слово medium/
Например: http:///img.radiokot.ru/files/86369/medium/hi06i91ui.jpg
akl писал(а):О! Ещё один самовидвиженец на роль держиморды ветки.
Ваша битовая маска иностранец?
Даю вероятность 99% что в ветке на какой-то странице холивар уже был? Ссылку иностранец укажы. Ты ведо модер али как поставщик. Моя скатинка за женой на кухню уже побежала. На клавитуру уже не лезет.
Последний раз редактировалось art100 Сб дек 19, 2015 10:00:58, всего редактировалось 1 раз.
uldemir писал(а):Убогий, еще не осознал, что микроконтроллеры не делятся на два типа. Как и среды разработки. Пожалуй, этот оффтопик надо гасить. Пойду нажму "!"
Когда же люди читать на учатся. Вы можете сказать в часах на ин-ках какого проца больше или нет?
Ваша битовая маска чужеземец?
You undestand for my?
Схожим методом общался на местном форуме только алкаш Витя.
Причем тут пики и атмелы?
Кто-то сказал, что часы делаются на пиках в основном?
Как раз нет. Я например и начал все радиолюбительство только из-за успешных запусков атмег и программатора к ним на 5 проводках, много ли бы я сделал такого на пиках?
art100 писал(а):Когда же люди читать на учатся. Вы можете сказать в часах на ин-ках какого проца больше или нет?Ваша битовая маска чужеземец?
Пожалуйста, сам научить писать. Пишешь совершенно безграмотно, что и читать противно. Это уже один Вам минус в карму. Публикуешь совершенно ненужный и бесполезный "быдлокод", который никому, окромя Вас совершенно не интересен - второй минус в карму. И поменьше употребляйте пиво. Хотя бы не прилюдно.