Вс июн 12, 2016 04:39:17
Вс июн 12, 2016 20:34:00
Вс июн 12, 2016 22:26:45
Пн июн 13, 2016 03:49:27
Пн июн 13, 2016 18:27:28
Вт июн 14, 2016 03:58:03
Вт июн 14, 2016 11:32:14
Вт июн 14, 2016 11:42:27
Вт июн 14, 2016 15:03:31
Ср июн 15, 2016 01:04:13
Ср июн 15, 2016 02:08:33
AndroVet писал(а):Вопросы:
1. так на чем-же всё таки делать? На ATtiny2313 или на AtMega? (мне больше понравилась AtMega...)
2. не понял - AtMega8; AtMega328 - по Вашей ссылке; AtMega168 - в посту, это по сути всё одно и тоже?
3. спасибо за ссылки на оч.хорошие статьи по програмированию и прошивке, 99.9%, что разберусь, напишу и прошью, НО! Статья по програмированию для ATtiny2313 подходит для AtMega328 (по ссылке, которая ведёт на eBay)?
Ср июн 15, 2016 02:48:36
Ср июн 15, 2016 08:03:07
Чт июн 16, 2016 10:17:51
const int SensorPin = 5; // Геркон или датчик положения/наклона
const int MainWorkLED = 13; // встроенный LED, он же MainWorkLED
const int TimerLEDPin = 8; // Timer (пока просто LED)
const int SAButtonPin = 2; // Кнопка включения SA
const int ToSoldering = 7; // Управление Паялкой на 12-ю ногу МК
void setup() {
pinMode(MainWorkLED, OUTPUT);
pinMode(TimerLEDPin, OUTPUT);
pinMode(ToSoldering, OUTPUT);
pinMode(SAButtonPin, INPUT);
pinMode(SensorPin, INPUT);
}
void loop() {
while (digitalRead(SAButtonPin) == HIGH) {
TimerWork();
}
digitalWrite(MainWorkLED, LOW); // LED - Таймер В РАБОТЕ (НЕ горит)
digitalWrite(ToSoldering, HIGH); // Паялка ОТКЛЮЧЕНА
}
void TimerWork() {
digitalWrite(MainWorkLED, HIGH); // LED - Таймер В РАБОТЕ (ГОРИТ)
/* тут проверка времени таймера:
*
на Вх."SENSOR" 1
И =======
прошло 30 мин
ИЛИ ----------
на Вх."SENSOR" 0
И =======
прошло 30 мин
то тут:
прога моргания диодами, с обратным отсчётом и своим таймером
в итоге - SA-Откл.(HIGH) (полный STOP)
*/
digitalWrite(ToSoldering, LOW); // Паялка ВКЛЮЧЕНА
}
Чт июн 16, 2016 19:38:07
AndroVet писал(а):Всё, со всем разобрался. Начал писать программу. Проверил - уже начинает работать.
.... "А Я только телики ламповые ваяю......"
Чт дек 22, 2016 11:02:53
Чт дек 29, 2016 22:12:32
Пт дек 30, 2016 09:41:30
Вс янв 22, 2017 10:44:22
#define T1 1080000
#define T2 1080120
#define T3 1320120
#define T4 1320240
#define T5 1320290
#define T6 1320390
#define T7 1500390
#define T8 1500510
#define T9 1500560
#define T10 1500680
#define T11 1500730
#define T12 1500830
#define T13 1620830
#define T14 1621680
#define T15 1681680
int OutPut = 4; // 13-Test! 4-REAL OutPut OUTPUT to Soldering ON / OFF (OptoCouple | Gerkon)
int Beeper = 7; // Buzzer PinOUTPUT (BEEPer)
int Sensor = 2; // Sensor (vibration / position / shock)
int Switch = 3; // Switch (to ON => short to GND!)
volatile int TimLed = 5; // TimerLED: Time to OFF elapsed...
volatile int inter = 0; // Main MyFunc
unsigned long millis_start = 0;
unsigned long millis_real = 0;
unsigned long Timer_ = 0;
uint8_t blink_loop = 0;
uint8_t blink_mode = 0B00000000;
uint8_t modes_count = 0;
uint16_t n = 63583; //4 time/sec
void setup()
{
pinMode(TimLed, OUTPUT);
pinMode(OutPut, OUTPUT);
pinMode(Beeper, OUTPUT);
pinMode(Sensor, INPUT);
pinMode(Switch, INPUT);
digitalWrite(TimLed, LOW);
digitalWrite(OutPut, LOW);
digitalWrite(Sensor, HIGH);
digitalWrite(Switch, HIGH);
millis_start = millis();
millis_real = millis();
blink_mode = 0B00000000;
attachInterrupt(0, blink, CHANGE);
attachInterrupt(1, blink, FALLING);
TCCR1A = 0;
TCCR1B = 1<<CS22 | 0<<CS21 | 1<<CS20;
TIMSK1 = 1<<TOIE1;
TCNT1 = n;
sei();
}
ISR(TIMER1_OVF_vect) {
if(blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(TimLed, HIGH);
else digitalWrite(TimLed, LOW);
blink_loop++;
TCNT1 = n; }
void blink() {inter=1;}
void loop() {
while (digitalRead(Switch) == LOW)
{
if(inter==1) {
digitalWrite(OutPut, HIGH);
blink_mode = 0B00000000;
inter = 0;
millis_start = millis();
millis_real = millis(); }
Timer_= millis_real-millis_start;
millis_real = millis();
if(Timer_ >= 1 && Timer_ < T1) blink_mode = 0B00000000; // WORK Time (Normal, Main, First)
if(Timer_ >= T1 && Timer_ < T2) { // 1st 1x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T2 && Timer_ < T3) blink_mode = 0B00000001; // WORK Time + "BLINK-1" 1x/SEC
if(Timer_ >= T3 && Timer_ < T4) { // 2st 1x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T4 && Timer_ < T5) noTone (Beeper);
if(Timer_ >= T5 && Timer_ < T6) { // 2st 2x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T6 && Timer_ < T7) blink_mode = 0B00000101; // WORK Time + "Blink-2" 2x/SEC
if(Timer_ >= T7 && Timer_ < T8) { // 3st 1x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T8 && Timer_ < T9) noTone (Beeper); // BEEP-Pause, Tone OFF
if(Timer_ >= T9 && Timer_ < T10) { // 3st 2x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T10 && Timer_ < T11) noTone (Beeper); // BEEP-Pause, Tone OFF
if(Timer_ >= T11 && Timer_ < T12) { // 3st 3x-BEEP 150ms
blink_mode = 0B00000000;
tone (Beeper, 2000, 10); }
if(Timer_ >= T12 && Timer_ < T13) blink_mode = 0B00010101; // WORK Time + "Blink-3" (x3/sec)
if(Timer_ >= T13 && Timer_ < T14) { // LONG last BEEP
blink_mode = 0B00000000;
tone (Beeper, 2000, 50); }
if(Timer_ >= T14 && Timer_ < T15) blink_mode = 0B01010101; // WORK Time + "Blink-4" (x4/sec)
if(Timer_ >= T15){
digitalWrite(OutPut, LOW);
blink_mode = 0B00001111; } // "Blink-5" (0.5/sec)
}
digitalWrite(OutPut, LOW);
blink_mode = 0B00000000;
noTone (Beeper);
}
Чт фев 09, 2017 13:25:31
AndroVet писал(а):Понимаю, что и для временнЫх диапазонов и для буззера наверняка как-то можно всё сделать проще.