Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 10:31:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7581 ]     ... , , , 257, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ардуино часы
СообщениеДобавлено: Пт ноя 17, 2017 19:35:12 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 20, 2017 16:02:20
Сообщений: 31
Рейтинг сообщения: 0
Ребята, добрый вечер, может кто окажет помощь в правке скетча, сам не могу врубиться (ни в зуб ногой!). Понравились одни из часиков( именно простой анимацией), слепил, все работает кроме измерения температуры, видно в скетче, что нет мат описания измерения, нашел в другом скетче, а как вставить...? что бы измерялась температура


Вложения:
Комментарий к файлу: сам скетч
Moi_Czasy-1.txt [118.92 KiB]
Скачиваний: 220
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 17, 2017 19:57:30 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
1. Зачем в часах температура ? :o
На сколько мне известно, часы показывают время :dont_know:

2. Как тут что то можно подправить ? :
СпойлерИзображение
Вложение:
2017-11-17_20-57-01.png [154.91 KiB]
Скачиваний: 55


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 17, 2017 20:53:42 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
что и откуда вставить?
чем вы собрались температуру мерять и когда показывать?
телепатов нет, пишите подробно.

2. Как тут что то можно подправить ?

*nix- овые окончания строк, ничего вроде необычного. Код типично ардуинский, это да)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 17, 2017 20:56:10 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 20, 2017 16:02:20
Сообщений: 31
Рейтинг сообщения: 0
Если можно температуру показывать, почему нет? (Ардуино НАНО+MAX7219)Температура измеряется термистором на А0. Есть библиотечка "math.h" , я ее нашел#include <math.h> // библиотека для выполнения простых математических операций

double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15; // Kelvin to Celcius
//Temp = (Temp * 9.0)/ 5.0 + 32.0; // 1 способ Convert Celcius to Fahrenheit
//Temp = (Temp * 1.8) + 32.0; // 2 способ Convert Celcius to Fahrenheit
return Temp;
}

void setup() {
Serial.begin(9600); // открывает последовательный порт, на скорости 9600 бит/c
}

void loop() {
Serial.print("Sensor_1: ");
Serial.println(float(Thermister(analogRead(0))), 1); // выводим показание 1 датчика
//Serial.print("Sensor_2: ");
//Serial.println(float(Thermister(analogRead(1))), 1); // выводим показание 2 датчика
//Serial.println(int(Thermister((analogRead(0))* 1.8) + 32.0)); // выводим показание 1 датчика в фаренгейтах
delay(1000); // ждем 1 секунду
}(, и ее надо вставить в скетч.С расширением ino. файл не передать, изменить расширение(txt-ino) и ... получится скетч. Как то так.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 19, 2017 09:24:26 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 20, 2017 16:02:20
Сообщений: 31
Рейтинг сообщения: 0
Так понимаю, грамотных много, а помочь...? :cry:


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 19, 2017 10:26:14 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А самому попробовать ? Нужно же всего-лишь "её вставить в сетч".
Вставить то мы тоже сможем, но что получится после этого ? Как проверять ? Как отлаживать, если что-то не заработает ?

У Вас в руках железо, так что пробуйте, вставляйте, меняйте, ... Появятся вопросы (именно вопросы, а не просьбы сделать всё за Вас) - обращайтесь, тут всегда помогут тем, кто делает сам и на чём-то конкретном затыкается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 19, 2017 13:07:35 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 20, 2017 16:02:20
Сообщений: 31
Рейтинг сообщения: 0
Спасибо, что не отказали, смог бы-не обращался. А что надо вставить и куда я и сам как-то допер, что-то не хочет только.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 03:46:54 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Добрый день подскажите в С как нибудь можно в цикле по полям структуры пройтись? и проверить их скажем на больше меньше числа. А в C ++ ?

Допустим как-то так, и надо выявить какая именно авария произошла.
Код:
typedef struct{
   uint8_t error1;
   uint8_t error2;
   uint8_t error3;
   uint8_t error4;
}Type_error;


Или перекопировать из одной переменной Type_error в другую с таким же типом , только несколько полей скажем все кроме одного.

Код:
Type_error  Err1;
Type_error  Err2;
Err1.error1=Err2.error1;  // Вот это как сделать по феншую ?
Err1.error2=Err2.error2;
Err1.error3=Err2.error3;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 07:07:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
pokk писал(а):
в С как нибудь можно в цикле по полям структуры пройтись?
нельзя
pokk писал(а):
// Вот это как сделать по феншую ?
вот так и делать

в цикле можно пройтись только по массиву

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 08:16:46 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 1
pokk:
Если все поля одного типа, как у Вас в примере, можно для такого дела завести:
Код:
typedef union {
  struct {
    uint8_t error1;
    uint8_t error2;
    uint8_t error3;
    uint8_t error4;
  };
  uint8_t error[4];
} Type_error;
...
Type_error te;
for (uint8_t i = 0; i < sizeof(Type_error); i++) {
  te.error[i] = 3;
}
Тогда можно и по полям обращаться, как раньше, и по индексам массива.

В принципе, можно и как в оригинале было, без union:
Код:
struct {
  uint8_t error1;
  uint8_t error2;
  uint8_t error3;
  uint8_t error4;
} Type_error ;
...
Type_error te;
for (uint8_t i = 0; i < sizeof(Type_error); i++) {
  *(uint8_t*)(&te + i) = 3;
}
, но это, опять же, только если все элементы структуры одного размера.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 08:52:54 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
WiseLord:
О за вариант с union спасибо, я примерно так же работал с массивом, только приходилось define элементы обзывать что бы не запутаться, а теперь как-то это надоело.
А про вариант, без union я уже думал, но как-то страшно, фиг его знает как компилятор структуру упакует. И при портретировании такого когда сложности могут возникать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 08:58:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
pokk писал(а):
фиг его знает как компилятор структуру упакует. И при портретировании такого когда сложности могут возникать
ну и зачем вам эти грабли? ну нельзя в Си перебирать поля структуры в цикле... смиритесь. все костыли вам боком выйдут.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 23, 2017 14:07:30 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
на всякий случай, не касаясь собственно структур
Допустим как-то так, и надо выявить какая именно авария произошла.

не надо так делать :dont_know: если нужно регистрировать множество различных и возможно одновременных ошибок, удобнее битовые маски
Код:
uint32_t errors;

typedef enum {
   ERR_FOO = (uint32_t) 0x000001,
   ERR_BAR = (uint32_t) 0x000002,
   ERR_AAAAAAAAA = (uint32_t) 0x000004,
   ERR_ZOMBIEAPOCALYPSE = (uint32_t) 0x000008
} error_event_t;

....
errors = 0;
....
errors |= ERR_FOO;
....
if(errors){
   if(errors & ERR_FOO){
      .....
   }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 06:33:24 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
arkhnchul, да я сделал похоже, но в лоб(про умножение на 2), некоторые флаги достигают трех состояний.

Код:
//==========================
/*
   * @Описание:   Устанавливаем статусные биты(норма,предупреждение,авария).
   * @Параметр:
   * @Возврат:      Нету
*/
void SetStatus(uint8_t data,uint32_t Var){
   MatchVall.StatusAll&=(~(3<<Var*2));      //очистить место под установку битов(стереть предыдушее значение)
   MatchVall.StatusAll|= (data<<(Var*2));
}
//==========================
/*
   * @Описание:   Функция возврашает статус запрашиваемого параметра.
   * @Параметр:
   * @Возврат:      Нету
*/
uint8_t GetStatus(uint32_t Var){
uint32_t temp;
   temp=MatchVall.StatusAll&(3<<Var*2);
   temp=temp>>(Var*2);
   return temp;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 07:36:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
pokk писал(а):
да я сделал похоже, но в лоб
как с моей точки зрения, так вы сделали плохо, я бы даже сказал недопустимо, если бы мне не было все равно :))) кто вам помешал сделать нормально?
Код:
typedef enum{
   STATUS_OK,
   STATUS_FAIL,
   STATUS_ALARM
}status_t;

и затем в структуре объявить поле этого типа, в функциях сравнивать значение этого поля с константами, задавать константами его значение и т.п.? ну то есть как обычно все делают?

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 11:49:15 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
ARV, имеете ввиду как-то так ?Да выглядит красивее, но мне дальше надо было проверять, какой либо из параметров в аварии, и не охото было условий 6-7 ставить.
Код:
typedef enum{
   STATUS_OK,
   STATUS_FAIL,
   STATUS_ALARM
}status_t;

typedef struct{
   status_t T;
   status_t AC;
   status_t Erorr3;
   status_t Erorr4;
}T_error_t;
T_error_t Error;

void SetStatus123(status_t data,status_t Var){
   if(data==STATUS_OK){Var=STATUS_OK;}
   if(data==STATUS_FAIL){Var=STATUS_OK;}
   if(data==STATUS_ALARM){Var=STATUS_OK;}
}

SetStatus123(STATUS_ALARM,Error.AC);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 12:01:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я конечно, не профессиональный программист, и всех тонкостей не знаю... но вот это меня удивило:
Код:
void SetStatus123(status_t data,status_t Var){
   if(data==STATUS_OK){Var=STATUS_OK;}
   if(data==STATUS_FAIL){Var=STATUS_OK;}
   if(data==STATUS_ALARM){Var=STATUS_OK;}
}
это вот что должно означать? на месте компилятора я бы эту функцию выкинул, как бессмыленно-бесполезную. для обработки состояния лично я бы написал так:
Код:
status_t status;
...
switch(status){
case STATUS_OK:
   ...
   break;
case STATUS_FAIL:
   ...
   break;
case STATUS_ALARM:
   ...
   break;
}
как обычно все и делают...

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 12:39:45 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Ну да, я обычно так и делаю все на case, это я так в блокноте накидал для примера, но в любом случае, кучу проверок дальше это не отменяет, что бы перепроверить все эти переменные, для зажигании лампочки авария.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 14:23:34 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
как обычно все и делают

для единичных статусов да, а для множественных - таки обычно маски.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт ноя 24, 2017 16:00:03 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 19
Зарегистрирован: Пн ноя 02, 2009 05:27:41
Сообщений: 119
Откуда: С-Пб
Рейтинг сообщения: 0
WiseLord:
О за вариант с union спасибо, я примерно так же работал с массивом, только приходилось define элементы обзывать что бы не запутаться, а теперь как-то это надоело.
А про вариант, без union я уже думал, но как-то страшно, фиг его знает как компилятор структуру упакует. И при портретировании такого когда сложности могут возникать.

Не знаю, берет ли компилятор, но можно ему задать выравнивание перед объявлением структуры:
Код:
#pragma pack(push, 1)
  struct {
    uint8_t error1;
    uint8_t error2;
    uint8_t error3;
    uint8_t error4;
  };
#pragma pack(pop)

Если GCC, то можно попробовать так:
Код:
  struct {
    uint8_t error1;
    uint8_t error2;
    uint8_t error3;
    uint8_t error4;
  } __attribute__ ((__packed__));

И дальше, зная что каждое поле занимает 1 байт обращаемся как к массиву. Даже если будут разные типы, мы же знаем их
размер, но будет чуть сложнее.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7581 ]     ... , , , 257, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y