Arduino

Arduino в Смоленске
Увлечения и развлечения

Модератор: Bergman

Сообщение neutrino » 21 апр 2017, 14:03

Aml писал(а):Ну, Си сейчас наши студенты на информатике 1-й и 2-й курс изучают. А потом на 3 курсе при знакомстве с микроконтроллерами сначала чуток Ассемблера для понимания работы с внутренней структурой микроконтроллера и реализации простейших программ. А потом привычный им Си для решения более-менее практических задач с тем же микроконтроллером. И вставки Ассемблера для критических фрагментов, где важна максимальная скорость исполнения кода.
Я про ассемблер к тому, что Ардуино является достаточно гибкой платформой, позволяющей пользователю работать с ней на трех уровнях сложности: стандартном ардуиновском IDE, на чистом Си через типовые программы и на ассемблере (для извращенцев или спецов).


Хорошо, только давайте им азы теории конечный автоматов, а то они, бывает, совсем не врубаются, что же такое программа вообще ) А настоящим извращениям, попади они к нам, научим быстро ))
Новенький, кстати, очень даже хорош )
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение barmoglot » 24 апр 2017, 07:51

neutrino, реализовать умный дом сможешь?
Аватара пользователя
barmoglot
 
Сообщения: 27310
Зарегистрирован: 17 мар 2009, 18:43

Сообщение Академик Иосиф » 24 апр 2017, 11:06

barmoglot писал(а):neutrino, реализовать умный дом сможешь?

Интересная штука. В теории, мне кажется, это не слишком то и сложно.
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение FreemanNow » 24 апр 2017, 11:07

Академик Иосиф, умный дом для бармаглота это не просто сложно, это непостижимо))
FreemanNow
 
Сообщения: 33490
Зарегистрирован: 02 окт 2006, 09:23
Откуда: г.Смоленск

Сообщение neutrino » 24 апр 2017, 11:41

barmoglot писал(а):neutrino, реализовать умный дом сможешь?


К сожалению, нет. Я не занимаюсь крупными системами. Если только отдельный датчик или манипулятор, но их уже много готовых, нет смысла изобретать велосипед.
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение neutrino » 24 апр 2017, 12:12

Академик Иосиф писал(а):
barmoglot писал(а):neutrino, реализовать умный дом сможешь?

Интересная штука. В теории, мне кажется, это не слишком то и сложно.


Это очень обманчивое впечатление. Даже поддержание постоянной температуры воздуха в помещении - непростая задача в теории.
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение Академик Иосиф » 24 апр 2017, 15:20

neutrino писал(а):Это очень обманчивое впечатление. Даже поддержание постоянной температуры воздуха в помещении - непростая задача в теории.

Ну почему? Жарко - открыл окно. Холодно - включил топку. И так пока не будет ровно +22. :nez-nayu:
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение FreemanNow » 24 апр 2017, 15:23

Академик Иосиф, а еще при этом экономить энергию и следить за влажностью и кислородом )
FreemanNow
 
Сообщения: 33490
Зарегистрирован: 02 окт 2006, 09:23
Откуда: г.Смоленск

Сообщение neutrino » 24 апр 2017, 15:29

Академик Иосиф писал(а):Ну почему? Жарко - открыл окно. Холодно - включил топку. И так пока не будет ровно +22. :nez-nayu:


Что ж, попробуем рассуждать. На примере нагрева воздуха для начала.
Ты выключаешь топку когда воздух ровно +22, она остывает, продолжая отдавать тепло воздуху, когда остынет полностью, температура станет 24, а то и 25. Что будешь делать?
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение Академик Иосиф » 24 апр 2017, 16:36

neutrino писал(а):Что ж, попробуем рассуждать. На примере нагрева воздуха для начала.
Ты выключаешь топку когда воздух ровно +22, она остывает, продолжая отдавать тепло воздуху, когда остынет полностью, температура станет 24, а то и 25. Что будешь делать?

Вряд ли. Живу ж с котлом, и штоб по инерции нагрело на 2-3 градуса сверху, такого не было никогда и ни разу.
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение neutrino » 24 апр 2017, 16:45

Академик Иосиф писал(а):Вряд ли. Живу ж с котлом, и штоб по инерции нагрело на 2-3 градуса сверху, такого не было никогда и ни разу.


Это частный случай. Ты же не будешь, получив задание спроектировать умный дом, предлагать всем переехать к тебе или чаще проветривать?

Есть условие задачи. Нужно решение.
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение Академик Иосиф » 24 апр 2017, 18:38

neutrino писал(а):Это частный случай. Ты же не будешь, получив задание спроектировать умный дом, предлагать всем переехать к тебе или чаще проветривать?

Есть условие задачи. Нужно решение.

Если кладовку какую топить, то может. Целую квартиру, и уж тем более дом - не по физике как-то. :ne_ne_ne:
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение neutrino » 24 апр 2017, 18:50

Академик Иосиф писал(а):Если кладовку какую топить, то может. Целую квартиру, и уж тем более дом - не по физике как-то. :ne_ne_ne:


Зависит от соотношения мощности нагревателя и объема помещения.

Эффект обычный, техническое решение существует, вопрос сформулирован недвусмысленно. Не виляй, ты же не в Политике )))
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение Академик Иосиф » 24 апр 2017, 18:50

neutrino писал(а):Выполняемый код покажи.


Главная:
Код: Выделить всё
int main()
{
   unsigned char string1[] = "cъешь еще этих";
   unsigned char string2[] = "мягких французских";
   unsigned char string3[] = "булок, да выпей";
   unsigned char string4[] = "чаю! @#;%:?*()_+";
   unsigned char string5[] = "СЪЕШЬ ЕЩЕ ЭТИХ";
   unsigned char string6[] = "МЯГКИХ ФРАНЦУЗСКИХ";
   unsigned char string7[] = "БУЛОК, ДА ВЫПЕЙ";
   unsigned char string8[] = "ЧАЮ?[]{}\|/`~";


   LCD12864_Init();
   _delay_ms(1);
   LCD12864_Clr();
   _delay_ms(1);
   
   LCD12864_String(0,0,string1,sizeof(string1)-1);
   LCD12864_String(1,0,string2,sizeof(string2)-1);
   LCD12864_String(2,0,string3,sizeof(string3)-1);
   LCD12864_String(3,0,string4,sizeof(string4)-1);
   LCD12864_String(4,0,string5,sizeof(string5)-1);
   LCD12864_String(5,0,string6,sizeof(string6)-1);
   LCD12864_String(6,0,string7,sizeof(string7)-1);
   LCD12864_String(7,0,string8,sizeof(string8)-1);
   while(1);
}


Вывод строки:
Код: Выделить всё
void LCD12864_String(unsigned char x0,unsigned char y0,char* buffer, unsigned char count)
{
   unsigned char x=x0;
   unsigned char y=y0;
   if((x>8)||(y>127)) return;
   LCD12864_GotoXY(x,y);
   for(unsigned char i=0;i<count;i++)
   {
      LCD12864_Char(x,y+6*i,buffer[i]); // игрэком задаётся интервал меж символами
   }
}


Вывод символа, который используется в выводе строки:
Код: Выделить всё
void LCD12864_Char(unsigned char x0, unsigned char y0, unsigned char code)
{
   unsigned char x=x0;//0..8 - задаем строку где буква выводится
   unsigned char y=y0;
   if(code<0x80)
      code-=0x20;//установка начала стандартных символов
   else
      code-=0x60;//установка начала русских символов               

   if(CS==0)
   {
      CMD_PORT |= (1<<RST)|(1<<CS2);
      CMD_PORT &= ~(1<<CS1);
   }
   else
   {
      CMD_PORT |= (1<<RST)|(1<<CS1);
      CMD_PORT &= ~(1<<CS2);
   }
   if(x>63 || y>127) return;
   for(unsigned int i=0;i<5;i++) // здесь задаётся ширина символа
   {
      LCD12864_GotoXY(x,y);
      if(i<=4)
      {
         if(MODE==0) LCD12864_Data(symbol[code][i]);  // МОДЕ - если 0, то чёрные символы на белом фоне, если 1 - наоборот
         else LCD12864_Data(~symbol[code][i]);
      }
      
      y+=1;
   }   
}


Сами символы берутся из отдельного файла, и я ещё не вникал, как они это делают.
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение Академик Иосиф » 24 апр 2017, 19:15

Код: Выделить всё
   unsigned char string1[] = "Академик Иосиф";
   unsigned char string2[] = "forum.smolensk.ws";
   unsigned char string3[] = "2017 год";
   unsigned char string4[] = "24 апреля";
   unsigned char string5[] = "19:10 (примерно)";
   unsigned char string6[] = "На улице +8.3'C";
   unsigned char string7[] = "Давление 735 мм рт.ст.";
   unsigned char string8[] = "Без осадков";
иркан.jpg
иркан.jpg (29.28 КБ) Просмотров: 102

опять штырит, но в другом месте :ne_vi_del:
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение Академик Иосиф » 24 апр 2017, 19:18

я уже молчу про функцию переноса по словам с прокруткой :ne_ne_ne:
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение neutrino » 24 апр 2017, 19:30

Попробуй пока такой вариант. Делаем строки глобальными с неизменным адресом и неприкосновенные.

Код: Выделить всё
   
    volatile static unsigned char string1[] = "cъешь еще этих";
    volatile static unsigned char string2[] = "мягких французских";
    volatile static unsigned char string3[] = "булок, да выпей";
    volatile static unsigned char string4[] = "чаю! @#;%:?*()_+";
    volatile static unsigned char string5[] = "СЪЕШЬ ЕЩЕ ЭТИХ";
    volatile static unsigned char string6[] = "МЯГКИХ ФРАНЦУЗСКИХ";
    volatile static unsigned char string7[] = "БУЛОК, ДА ВЫПЕЙ";
    volatile static unsigned char string8[] = "ЧАЮ?[]{}\|/`~";


    int main()
    {
   
       LCD12864_Init();
       _delay_ms(1);
       LCD12864_Clr();
       _delay_ms(1);
       
       LCD12864_String(0,0,string1,sizeof(string1)-1);
       LCD12864_String(1,0,string2,sizeof(string2)-1);
       LCD12864_String(2,0,string3,sizeof(string3)-1);
       LCD12864_String(3,0,string4,sizeof(string4)-1);
       LCD12864_String(4,0,string5,sizeof(string5)-1);
       LCD12864_String(5,0,string6,sizeof(string6)-1);
       LCD12864_String(6,0,string7,sizeof(string7)-1);
       LCD12864_String(7,0,string8,sizeof(string8)-1);
       while(1);
    }
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение Академик Иосиф » 24 апр 2017, 19:33

О, а это работает. Благодарю. Вот теперь со спокойной душой можно пилить перенос по словам.
Вот только почему то обратный слеш пропал :ne_vi_del:
Аватара пользователя
Академик Иосиф
 
Сообщения: 27860
Зарегистрирован: 07 май 2008, 23:38
Откуда: северо-запад

Сообщение neutrino » 24 апр 2017, 19:38

Академик Иосиф писал(а):О, а это работает. Благодарю. Вот теперь со спокойной душой можно пилить перенос по словам.
Вот только почему то обратный слеш пропал :ne_vi_del:


По-хорошему должен работать и предыдущий вариант, либо линкер обязан выдать ошибку выделения памяти.

Каким компилятором пользуешься?
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Сообщение neutrino » 24 апр 2017, 19:39

Академик Иосиф писал(а):Вот только почему то обратный слеш пропал :ne_vi_del:


Обратный слэш на С выглядит так: '\\', то есть их два. Попробуй.
Аватара пользователя
neutrino
 
Сообщения: 3237
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск

Пред.След.

Вернуться в Хобби

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1