простейшие часы на ардуино уно с индикацией на унивесальном шилде (Multi-function Shield)

9150516627t
Offline
Зарегистрирован: 09.01.2019

#include // подключение библиотеки таймера,библиотеку надо скачать в ардуино с интернета const int SER=8;//контакт для подключения вывода SER (DATA) const int LATCH=4;//контакт для подключения вывода LATCН const int CLK=7;//контакт для подключения вывода CLK const int LED=13; // константа LED типа int, выводит сигнал на 13 pin плат int S=0;// секунды int M=0;// минуты int Md=0;// десятки минут int H=0;//часы int Hd=0;// десятки часов int S1=0;// секунды int M1=0;// минуты int Md1=0;// десятки минут int H1=0;//часы int Hd1=0;// десятки часов const int Hk=15;//вывод для кнопки установки часов +1 const int Mk=16;//вывод для кнопки установки минут +1 void setup() { // put your setup code here, to run once: // put your setup code here, to run once: pinMode (LED, OUTPUT); // выход платы присвоенный переменной LED является выходом Timer1.initialize(1000000); // Значение для переполнения таймера 1000000 мкс (1 сек) Timer1.attachInterrupt(blinky); //Выполнять blinky () при переполнении pinMode (SER, OUTPUT);//вывод SER ВЫХОД pinMode (LATCH, OUTPUT);//вывод LATCН ВЫХОД pinMode (CLK, OUTPUT);// вывод CLK ВЫХОД pinMode (Hk, INPUT);//вывод Hk ВХОД pinMode (Mk, INPUT);//вывод Мk ВХОД } void loop(){ // put your main code here, to run repeatedly: digitalWrite(LATCH, LOW); shiftOut(SER,CLK,MSBFIRST,M1); //вывод минут shiftOut(SER,CLK,MSBFIRST,B11111000);//вывод знака 4 в семи сегментном индикатоеpе посpедством гашения первых 3 digitalWrite(LATCH, HIGH); digitalWrite(LATCH, LOW); shiftOut(SER,CLK,MSBFIRST,Md1); //вывод десятков минут shiftOut(SER,CLK,MSBFIRST,B11110100);//вывод знака 3 в семи сегментном индикатоеpе посpедством гашения первых 2 и 4 digitalWrite(LATCH, HIGH); digitalWrite(LATCH, LOW); shiftOut(SER,CLK,MSBFIRST,H1); //вывод часов shiftOut(SER,CLK,MSBFIRST,B11110010);//вывод знака 2 в семи сегментном индикатоеpе посpедством гашения первого и 3 с 4 digitalWrite(LATCH, HIGH); digitalWrite(LATCH, LOW); shiftOut(SER,CLK,MSBFIRST,Hd1); //вывод десятков часов shiftOut(SER,CLK,MSBFIRST,B11110001);//вывод знака 1 в семи сегментном индикатоеpе посpедством гашения 2,3,4 digitalWrite(LATCH, HIGH); } void blinky() { digitalWrite(LED, !digitalRead(LED)); //изменить состояние светодиода на выходе 13 (LED) S=S+1;//к пеpеменной S+1 if(S==60)//если секунды дошли до 60 то к минутам +1 { M=M+1; S=0; } if(M==60)//если минуты дошли до 60 то к часам +1 { H=H+1; M=0; } if(H==24)//если часы дошли до 24 то обнулить часы { H=0; } if(M==0)//если минуты =0 то выводить коды для зажигания 00 на индикатоах и т.д. { M1=192; Md1=192; } if(M==1) { M1=249; } if(M==2) { M1=164; } if(M==3) { M1=176; } if(M==4) { M1=153; } if(M==5) { M1=146; } if(M==6) { M1=130; } if(M==7) { M1=248; } if(M==8) { M1=128; } if(M==9) { M1=144; } if(M==10) { M1=192; Md1=249; } if(M==11) { M1=249; Md1=249; } if(M==12) { M1=164; Md1=249; } if(M==13) { M1=176; Md1=249; } if(M==14) { M1=153; Md1=249; } if(M==15) { M1=146; Md1=249; } if(M==16) { M1=130; Md1=249; } if(M==17) { M1=248; Md1=249; } if(M==18) { M1=128; Md1=249; } if(M==19) { M1=144; Md1=249; } if(M==20) { M1=192; Md1=164; } if(M==21) { M1=249; Md1=164; } if(M==22) { M1=164; Md1=164; } if(M==23) { M1=176; Md1=164; } if(M==24) { M1=153; Md1=164; } if(M==25) { M1=146; Md1=164; } if(M==26) { M1=130; Md1=164; } if(M==27) { M1=248; Md1=164; } if(M==28) { M1=128; Md1=164; } if(M==29) { M1=144; Md1=164; } if(M==30) { M1=192; Md1=176; } if(M==31) { M1=249; Md1=176; } if(M==32) { M1=164; Md1=176; } if(M==33) { M1=176; Md1=176; } if(M==34) { M1=153; Md1=176; } if(M==35) { M1=146; Md1=176; } if(M==36) { M1=130; Md1=176; } if(M==37) { M1=248; Md1=176; } if(M==38) { M1=128; Md1=176; } if(M==39) { M1=144; Md1=176; } if(M==40) { M1=192; Md1=153; } if(M==41) { M1=249; Md1=153; } if(M==42) { M1=164; Md1=153; } if(M==43) { M1=176; Md1=153; } if(M==44) { M1=153; Md1=153; } if(M==45) { M1=146; Md1=153; } if(M==46) { M1=130; Md1=153; } if(M==47) { M1=248; Md1=153; } if(M==48) { M1=128; Md1=153; } if(M==49) { M1=144; Md1=153; } if(M==50) { M1=192; Md1=146; } if(M==51) { M1=249; Md1=146; } if(M==52) { M1=164; Md1=146; } if(M==53) { M1=176; Md1=146; } if(M==54) { M1=153; Md1=146; } if(M==55) { M1=146; Md1=146; } if(M==56) { M1=130; Md1=146; } if(M==57) { M1=248; Md1=146; } if(M==58) { M1=128; Md1=146; } if(M==59) { M1=144; Md1=146; } if(M==60) { M1=192; Md1=192; } if(H==0) { H1=192; Hd1=192; } if(H==1) { H1=249; Hd1=192; } if(H==2) { H1=164; Hd1=192; } if(H==3) { H1=176; Hd1=192; } if(H==4) { H1=153; Hd1=192; } if(H==5) { H1=146; Hd1=192; } if(H==6) { H1=130; Hd1=192; } if(H==7) { H1=248; Hd1=192; } if(H==8) { H1=128; Hd1=192; } if(H==9) { H1=144; Hd1=192; } if(H==10) { H1=192; Hd1=249; } if(H==11) { H1=249; Hd1=249; } if(H==12) { H1=164; Hd1=249; } if(H==13) { H1=176; Hd1=249; } if(H==14) { H1=153; Hd1=249; } if(H==15) { H1=146; Hd1=249; } if(H==16) { H1=130; Hd1=249; } if(H==17) { H1=248; Hd1=249; } if(H==18) { H1=128; Hd1=249; } if(H==19) { H1=144; Hd1=249; } if(H==20) { H1=192; Hd1=164; } if(H==21) { H1=249; Hd1=164; } if(H==22) { H1=164; Hd1=164; } if(H==23) { H1=176; Hd1=164; } if(H==24) { H1=192; Hd1=192; } if (digitalRead(Hk)== LOW)//если на входе кнопки часов 0 то к часам +1 { H=H+1; } if (digitalRead(Mk)== LOW)//если на входе кнопки минут 0 то к минутам +1 { M=M+1; } }

9150516627t
Offline
Зарегистрирован: 09.01.2019
#include <TimerOne.h> // подключение библиотеки таймера,библиотеку надо скачать в ардуино с интернета
const int SER=8;//контакт для подключения вывода SER (DATA)
const int LATCH=4;//контакт для подключения вывода LATCН
const int CLK=7;//контакт для подключения вывода CLK
const int LED=13; // константа LED типа int, выводит сигнал на 13 pin плат
int S=0;// секунды
int M=0;// минуты
int Md=0;// десятки минут
int H=0;//часы
int Hd=0;// десятки часов
int S1=0;// секунды
int M1=0;// минуты
int Md1=0;// десятки минут
int H1=0;//часы
int Hd1=0;// десятки часов
const int Hk=15;//вывод для кнопки установки часов +1
const int Mk=16;//вывод для кнопки установки минут +1


void setup() {
  // put your setup code here, to run once:
 // put your setup code here, to run once:
 pinMode (LED, OUTPUT); // выход платы присвоенный переменной LED является выходом
 Timer1.initialize(1000000); // Значение для переполнения таймера 1000000 мкс (1 сек) 
 Timer1.attachInterrupt(blinky); //Выполнять blinky () при переполнении
 pinMode (SER, OUTPUT);//вывод SER ВЫХОД
 pinMode (LATCH, OUTPUT);//вывод LATCН ВЫХОД
 pinMode (CLK, OUTPUT);// вывод CLK ВЫХОД
 pinMode (Hk, INPUT);//вывод Hk ВХОД 
 pinMode (Mk, INPUT);//вывод Мk ВХОД
}



void loop(){
  // put your main code here, to run repeatedly:


    digitalWrite(LATCH, LOW);
    shiftOut(SER,CLK,MSBFIRST,M1); //вывод минут
    shiftOut(SER,CLK,MSBFIRST,B11111000);//вывод знака 4 в семи сегментном индикатоеpе посpедством гашения первых 3  
    digitalWrite(LATCH, HIGH);
    digitalWrite(LATCH, LOW);
    shiftOut(SER,CLK,MSBFIRST,Md1); //вывод десятков минут
    shiftOut(SER,CLK,MSBFIRST,B11110100);//вывод знака 3 в семи сегментном индикатоеpе посpедством гашения первых 2 и 4  
    digitalWrite(LATCH, HIGH);
    digitalWrite(LATCH, LOW);
    shiftOut(SER,CLK,MSBFIRST,H1); //вывод часов
    shiftOut(SER,CLK,MSBFIRST,B11110010);//вывод знака 2 в семи сегментном индикатоеpе посpедством гашения первого и 3 с 4  
    digitalWrite(LATCH, HIGH);
    digitalWrite(LATCH, LOW);
    shiftOut(SER,CLK,MSBFIRST,Hd1); //вывод десятков часов
    shiftOut(SER,CLK,MSBFIRST,B11110001);//вывод знака 1 в семи сегментном индикатоеpе посpедством гашения 2,3,4  
    digitalWrite(LATCH, HIGH);
}
  

void blinky()
{
  digitalWrite(LED, !digitalRead(LED)); //изменить состояние светодиода на выходе 13 (LED)
  S=S+1;//к пеpеменной S+1
  if(S==60)//если секунды дошли до 60 то к минутам +1
  {
    M=M+1;
    S=0;
  }
 if(M==60)//если минуты дошли до 60 то к часам +1
  {
    H=H+1;
    M=0;
  }
  if(H==24)//если часы дошли до 24 то обнулить часы
  {
   H=0;
  }
  if(M==0)//если минуты =0 то выводить коды для зажигания 00 на индикатоах и т.д.
  {
    M1=192;
    Md1=192;
  }
   if(M==1)
  {
    M1=249;
  }
   if(M==2)
  {
    M1=164;
  }
   if(M==3)
  {
    M1=176;
  }
   if(M==4)
  {
    M1=153;
  }
   if(M==5)
  {
    M1=146;
  }
   if(M==6)
  {
    M1=130;
  }
   if(M==7)
  {
    M1=248;
  }
   if(M==8)
  {
    M1=128;
  }
   if(M==9)
  {
    M1=144;
  }
   if(M==10)
  {
    M1=192;
    Md1=249;
  }
  if(M==11)
  {
    M1=249;
    Md1=249;
  }
   if(M==12)
  {
    M1=164;
    Md1=249;
  }
   if(M==13)
  {
    M1=176;
    Md1=249;
  }
   if(M==14)
  {
    M1=153;
    Md1=249;
  }
   if(M==15)
  {
    M1=146;
    Md1=249;
  }
   if(M==16)
  {
    M1=130;
    Md1=249;
  }
   if(M==17)
  {
    M1=248;
    Md1=249;
  }
   if(M==18)
  {
    M1=128;
    Md1=249;
  }
   if(M==19)
  {
    M1=144;
    Md1=249;
  }
   if(M==20)
  {
    M1=192;
    Md1=164;
  }
   if(M==21)
  {
    M1=249;
    Md1=164;
  }
   if(M==22)
  {
    M1=164;
    Md1=164;
  }
   if(M==23)
  {
    M1=176;
    Md1=164;
  }
   if(M==24)
  {
    M1=153;
    Md1=164;
  }
   if(M==25)
  {
    M1=146;
    Md1=164;
  }
   if(M==26)
  {
    M1=130;
    Md1=164;
  }
   if(M==27)
  {
    M1=248;
    Md1=164;
  }
   if(M==28)
  {
    M1=128;
    Md1=164;
  }
   if(M==29)
  {
    M1=144;
    Md1=164;
  }
   if(M==30)
  {
    M1=192;
    Md1=176;
  }
   if(M==31)
  {
    M1=249;
    Md1=176;
  }
   if(M==32)
  {
    M1=164;
    Md1=176;
  }
   if(M==33)
  {
    M1=176;
    Md1=176;
  }
   if(M==34)
  {
    M1=153;
    Md1=176;
  }
   if(M==35)
  {
    M1=146;
    Md1=176;
  }
   if(M==36)
  {
    M1=130;
    Md1=176;
  }
   if(M==37)
  {
    M1=248;
    Md1=176;
  }
   if(M==38)
  {
    M1=128;
    Md1=176;
  }
   if(M==39)
  {
    M1=144;
    Md1=176;
  }
   if(M==40)
  {
    M1=192;
    Md1=153;
  }
   if(M==41)
  {
    M1=249;
    Md1=153;
  }
   if(M==42)
  {
    M1=164;
    Md1=153;
  }
   if(M==43)
  {
    M1=176;
    Md1=153;
  }
   if(M==44)
  {
    M1=153;
    Md1=153;
  }
   if(M==45)
  {
    M1=146;
    Md1=153;
  }
   if(M==46)
  {
    M1=130;
    Md1=153;
  }
   if(M==47)
  {
    M1=248;
    Md1=153;
  }
   if(M==48)
  {
    M1=128;
    Md1=153;
  }
   if(M==49)
  {
    M1=144;
    Md1=153;
  }
   if(M==50)
  {
    M1=192;
    Md1=146;
  }
   if(M==51)
  {
    M1=249;
    Md1=146;
  }
   if(M==52)
  {
    M1=164;
    Md1=146;
  }
   if(M==53)
  {
    M1=176;
    Md1=146;
  }
   if(M==54)
  {
    M1=153;
    Md1=146;
  }
   if(M==55)
  {
    M1=146;
    Md1=146;
  }
   if(M==56)
  {
    M1=130;
    Md1=146;
  }
   if(M==57)
  {
    M1=248;
    Md1=146;
  }
   if(M==58)
  {
    M1=128;
    Md1=146;
  }
   if(M==59)
  {
    M1=144;
    Md1=146;
  }
   if(M==60)
  {
    M1=192;
    Md1=192;
  }
  if(H==0)
  {
  H1=192;
  Hd1=192;
  }
   if(H==1)
  {
  H1=249;
  Hd1=192;
  } 
   if(H==2)
  {
  H1=164;
  Hd1=192;
  } 
   if(H==3)
  {
  H1=176;
  Hd1=192;
  } 
   if(H==4)
  {
  H1=153;
  Hd1=192;
  } 
   if(H==5)
  {
  H1=146;
  Hd1=192;
  }
   if(H==6)
  {
  H1=130;
  Hd1=192;
  }  
   if(H==7)
  {
  H1=248;
  Hd1=192;
  } 
   if(H==8)
  {
  H1=128;
  Hd1=192;
  } 
   if(H==9)
  {
  H1=144;
  Hd1=192;
  } 
   if(H==10)
  {
  H1=192;
  Hd1=249;
  } 
   if(H==11)
  {
  H1=249;
  Hd1=249;
  }  
  if(H==12)
  {
  H1=164;
  Hd1=249;
  }
  if(H==13)
  {
  H1=176;
  Hd1=249;
  } 
  if(H==14)
  {
  H1=153;
  Hd1=249;
  } 
  if(H==15)
  {
  H1=146;
  Hd1=249;
  }  
  if(H==16)
  {
  H1=130;
  Hd1=249;
  } 
  if(H==17)
  {
  H1=248;
  Hd1=249;
  }  
  if(H==18)
  {
  H1=128;
  Hd1=249;
  } 
  if(H==19)
  {
  H1=144;
  Hd1=249;
  } 
  if(H==20)
  {
  H1=192;
  Hd1=164;
  }  
  if(H==21)
  {
  H1=249;
  Hd1=164;
  }  
  if(H==22)
  {
  H1=164;
  Hd1=164;
  } 
  if(H==23)
  {
  H1=176;
  Hd1=164;
  } 
  if(H==24)
  {
  H1=192;
  Hd1=192;
  } 
  if (digitalRead(Hk)== LOW)//если на входе кнопки часов 0 то к часам +1
  {
    H=H+1;                                                                                              
  }
 if (digitalRead(Mk)== LOW)//если на входе кнопки минут 0 то к минутам +1
  {
    M=M+1;                                                                                              
  }
}    
 
  
  

 

b707
Offline
Зарегистрирован: 26.05.2017

Это называется "поспешишь - людей насмешишь".

Шесть десятков IF для вывода всех показаний минут от "00" до "59" и 24 варианта вывода значений часов - такая усидчивость вызывает уважение %)))

Страшно представить, каким был бы код. если бы вам пришло в голову вывести на дисплей дату :)))

 

 

ЗЫ О массивах ничего не слышали? - почитайте. Они как раз для таких случаях придуманы.

И о разбиении числе на разряды. Открою страшную тайну - число "35" состоит из цифр "3" и "5". Составляя , например, минуты из разрядов, можно выводить их на индикатор, обходясь всего десятью цифрами - от "0" до "9" - и не писать в коде шестьдесят отдельных условий :)

9150516627t
Offline
Зарегистрирован: 09.01.2019

я писал исключительно по книге ардуино, и по форумам в ютуб, опыта прогамиования "0", вот и хотел услышать мнение спецов)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Тут же очень просто - то же М=35 - тогда первая цифра 3 будет (M/10), вторая 5 (M%10).

Напишите одну подпрограмму функцию, которой передаешь цифру, а она возвращает код. И все.

 

int KodIzCifry(int N){
if (N==0) return 192;
и т.д.
}

В программе
void loop(){
.........
.........

Md1=KodIzCifry(M/10);
M1=KodIzCifry(M%10);


9150516627t
Offline
Зарегистрирован: 09.01.2019

я целую таблицу составил пока написал код, разбирался как цифры высветить, изначально все было в двоичном коде. В этой программе недостаток в том что установка времени происходит во время прерывания, кнопки срабатывают не сразу. Программно  победить дребезг по книге Джереми Блума я не смог, обошел его таким путем

b707
Offline
Зарегистрирован: 26.05.2017

Вот эту самую таблицу и надо было оформить в виде массива. И от бинарного кода зря отказался

9150516627t
Offline
Зарегистрирован: 09.01.2019

мне попадалась книга Геворкяна "Бейсик это просто" попробую по ней разобраться и переосмыслить для языка Ардуино. Следующий проект думаю сделать термометр, вот может там смогу шагнуть дальше

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

История наверное ещё не знала про такое количество if на 500 строк кода !!!

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Komandir пишет:

История наверное ещё не знала про такое количество if на 500 строк кода !!!

История точно не знала, что "простейшие часы далее по списку..."  потребуют 500 строк кода :) Не, ну если на асме - то да, но блин блинский, терпения ТС не занимать :))

9150516627t
Offline
Зарегистрирован: 09.01.2019

зато я написал каждую строку сам, и программа работает, часы ходят довольно точно,чтобы освоить программирование на ардуино я сам себе придумал задачи и вот написал первую программу, для меня это целый ОКР  

9150516627t
Offline
Зарегистрирован: 09.01.2019

зато delay нет ни одного)

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Т.е. на данном этапе вы освоили только управляющий оператор if ?

А к чему привязаны ваши часы ? Для меня часы это прибор для того что бы узнать точное время ... (хотя бы два раза за сутки)

9150516627t
Offline
Зарегистрирован: 09.01.2019

привязаны к частоте работы микроконтроллера. Аппаратно питание во время отладки подавал с USB, далее запитал сначала от кроны, села ну очень быстро, потом спаял штук пять пальчиковых батареек продержались несколько часов, следующие стали аккумуляторы 18650 стало лучше, потребление электричества неприятно удивило, кушать часы любят. А про оператор IFвы не правы, в программе используется и прерывание и работа со сдвиговым регистром причем не так просто на нем четыре разные цифры вывести

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Простейшие часы, 55 строк, включая пустые, каждую написал сам. 

/*
    Name:       TinyClock.ino
    Created:	19.05.2020 9:02:58
    Author:     DtS
*/
#include <Arduino.h>
#include <DS3231.h>     // часы
#include <Messages.h>	// очередь сапщений
#include <DEF_MEssage.h>// определения сапщений 
#include <TM1637.h>	// икранчег

TMessageList MessageList(10); //очереть на 10 сапщений, больше не надо

// стандартный китайский модуль на SDA/SCL
//
TDS3231  Clock;  

// четырёхразрядный китайский модуль с двоеточием на 6,7 пине
//
TM1637	 Screen(6, 7, enTM1637Type::Time); 

void setup()
{
	Serial.begin(115200);
}

void Display(void) {
	Screen.PrintTime(Clock.Hour, Clock.Minute);
}

void Dispatch(const TMessage &Msg) {

	switch (Msg.Message)
	{
	case msg_TimeChanged:  // минуты поменялись, выводим время
		Display();
		break;

	case msg_SecondsChanged: // раз в секунду помигаем двоеточием
          Screen.ToggleColon();
          break; 
	case msg_DateChanged:// остальное, что отдают часы, пока не интересно
	case msg_TemperatureChanged:
		break;

	default:
		Serial.print("Unhandled message 0x");
		Serial.println(Msg.Message, HEX);
		break;
	}
}

void loop()
{
	Clock.Read();
	if (MessageList.Available()) Dispatch(MessageList.GetMessage());
}

P.S забыл. Ни одного deley-я()

 

9150516627t
Offline
Зарегистрирован: 09.01.2019

мне пол кода не понятно, я CASE пока не знаю.

Вы используете модуль часов, а я заставил часами быть саму ардуинку уно, у Вас я так понял вывод времени на дисплей, а у меня на четыре 8 сегментных индикатора.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

9150516627t как выставить точное время на ваших часах ? Насколько убегают/отстают ваши часы ?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

9150516627t пишет:

а у меня на четыре 8 сегментных индикатора.

Дак и у меня на 4 индикатора. Вот такие https://aliexpress.ru/i/32832772646.html

 

9150516627t
Offline
Зарегистрирован: 09.01.2019

в конце кода есть строки для двух кнопок, одна прибавляют +1час, другая +1минуту. Правда срабатывает нажатие только во время прерывания один раз в секунду. отставаний или замедлений часов я не заметил, сейчас попробую включить часы на пару недель от сети

9150516627t
Offline
Зарегистрирован: 09.01.2019

у меня такие же но стоят они на шилде, управляются через два последовательных регистра сдвига

b707
Offline
Зарегистрирован: 26.05.2017

9150516627t пишет:

у меня такие же но стоят они на шилде, управляются через два последовательных регистра сдвига

сколько раз нужно написать. что ваш код вывода на индикаторы бредовый. чтобы вы поняли? Уже как минимум пять человек вам намекнукло :)

Вы свой код сюда вывалили не для того чтоб похвастать (надеюсь) - а чтобы вам указали на ошибки. Вам указали. Так исправляйте.

Pyotr
Offline
Зарегистрирован: 12.03.2014

ТС, "роскошно" отдавать таймер 1 под часы, когда для этого есть millis() и работает тоже на прерывании. Вдруг потом таймер1 понадобится?

И минуты не могут поменяться, пока секунды не досчитают до 60. Также и с часами - пока минуты не дойдут до 60.

И какое терпение нужно иметь, чтоб подвести минуты с 01 на 56, например, и чтоб при этом не грохнуть эти часы об пол)))

Вобщем, есть над чем подумать...

9150516627t
Offline
Зарегистрирован: 09.01.2019

я понял что надо освоить массивы, лучше подскажите хорошую книгу по программированию, я пользуюсь книгой Джереми Блума "Ардуино" и мне понравилась книга Геворкяна "Бейсик это просто" она хоть и про бэйсик но полезного в ней много

9150516627t
Offline
Зарегистрирован: 09.01.2019

поеду думать на дачу до воскресенья буду читать, заодно и часы включу посмотрю точность

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Тут как бы про C и C++.

Для начала текущий сайт бы почитали - http://arduino.ru/Reference

9150516627t
Offline
Зарегистрирован: 09.01.2019

спасибо но там очень кратко, книга Геворкяна тем и хороша что он все разжевал, она конечно устарела, операторы по разному называются но мне помогла 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

9150516627t пишет:

операторы по разному называются

O_O

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

9150516627t пишет:

спасибо но там очень кратко, книга Геворкяна тем и хороша что он все разжевал, она конечно устарела, операторы по разному называются но мне помогла 

А по настоящему, программирование начинается с создания алгоритма. А уже потом, создав нормальный алгоритм, переводят его на какой-нибудь язык. Причем в этом случае язык не так важен. Хоть си++, хоть питон, да хоть бейсик. А прочитав несколько глав книги, создать нормальную программу - это иллюзия.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

mykaida пишет:

 прочитав несколько глав книги, создать нормальную программу - это иллюзия.

чойта.  создать-то можно, но выйдет примерно, как в стартовом посте. :)  пошти брэйнфак. 

9150516627t
Offline
Зарегистрирован: 09.01.2019

с чего то надо начинать...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Думаю, начинать надо с Кернигана и Ритчи. 

9150516627t
Offline
Зарегистрирован: 09.01.2019

спасибо, нашел эту книгу, чувствую надо купить фолиант

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Надо что типа учебника информатики

где НЦ - начало цикла, КЦ - конец цикла, ЕСЛИ ТО ИНАЧЕ ... ПЕРЕМЕННАЯ КОНСТАНТА МАССИВ ...

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Испортило программистов "скопировать-вставить".

Я бы, в свое время, сломался на вычерчивании блочного алгоритма такой программы. ТС вроде поупертее, но думаю и его бы сломало заполнение листов под печать перфокарт, а ни это - так девочка, которая их печатает. Когда он к ней подошел бы с пачкой листов и так, отводя глаза - Простейшие часики тут написал...

А потом еще раза 3-4 туда заходить. То сам ошибся, то девочка. Хороший стимул для оптимизации программ на стадии продумывания.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ох, скока я конфет девочкам из ВЦ перетаскал...  По весу кабы не больше, чем перфокарт. :)

А конфеты тада были дифьцыт.

Иопта, щас повспоминал, оказываеца 35 лет прошло.  А я и не заметил. :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Боже, как давно это было, 

Помнит только мутной реки вода. 

Время, када радость меня любила

Больше не вернуть, низашто, никада. 

:)

Пора, аднака, ближе к кладбищу переежжять. Чтоб далеко не тащить. 

vk007
Offline
Зарегистрирован: 16.06.2015

Pyotr пишет:
И какое терпение нужно иметь, чтоб подвести минуты с 01 на 56, например, и чтоб при этом не грохнуть эти часы об пол)))

Знакомьтесь: часы-радиоконструктор "Старт 7231", популярными были лет 30 назад. Для установки часов и минут тоже были только кнопки "+". Довольно медитативное занятие, я вам скажу. Особенно веселило, когда, "уснув на кнопке" в процессе, набегали лишние пару часов или минут. Но грохнуть об пол вещь, собранную своими руками... низачто.

9150516627t
Offline
Зарегистрирован: 09.01.2019

 

парни никак не могу в комментарий фото вставить, подскажите пожалуйста, я первый раз на форуме тему создал

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

9150516627t пишет:

парни никак не могу в комментарий фото вставить, подскажите пожалуйста

http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume

 

Pyotr
Offline
Зарегистрирован: 12.03.2014

vk007 пишет:

Знакомьтесь: часы-радиоконструктор "Старт 7231", популярными были лет 30 назад. Для установки часов и минут тоже были только кнопки "+". Довольно медитативное занятие, я вам скажу. Особенно веселило, когда, "уснув на кнопке" в процессе, набегали лишние пару часов или минут. Но грохнуть об пол вещь, собранную своими руками... низачто.

Че знакомиться? Примерно такие 30 лет назад я тоже собирал. Только без корпуса, и кнопок настроек было поменьше. На корпус денег не было, поэтому сам колхозил. Работали лет 20 у родителей в деревне. Потом сегменты стали притухать -купил им китайские часы.

Всетаки опрос кнопок там был почаще 1 Гц))