Ви не увійшли.
А что по твоему означает фраза "No such file or directory"?
Если совсем плохо с английским, есть куча переводчиков.
Martinways, я так понял ардуина будет включена всегда. Может в магнитолу лучше attiny13 запихнуть? Она будет хавать 1-2 миллиамперы, против десятков миллиампер ардуинки на atmege.
Вот скетч легко помещающийся в тиньку.
#define in_pin 0 //пин входа (меняете по своему вкусу)
#define out_pin 1 //пин выхода (аналогично)
#define _delay 150 //время задержки, мс*10
uint8_t timer = 0;
void setup() {
pinMode(in_pin, INPUT);
pinMode(out_pin, OUTPUT);
digitalWrite(out_pin, LOW);
}
void loop() {
if (!digitalRead(in_pin)) timer++; //если кнопка нажата, увеличиваем счетчик времени
else timer = 0; //иначе сбрасываем в 0 (защита от дребезга)
delay(10); //ждем 10 мс
if (timer > _delay) { //время задержки прошло?
digitalWrite(out_pin, !digitalRead(out_pin)); //меняем значение на выходе
timer = 0; //сбрасываем таймер
}
}
P.S. Можно заставить и тиньку и мегу засыпать до изменения состояния входа, тогда потребление вообще ничтожное будет.
Может 2ExedIICT2 ?
Для начала надо схему состряпать. Потом габариты платы внесут свои корректировки в используемые элементы. Потом еще всякие тонкости компоновки и совместимости. И т.д. и п.т.
В конце концов получается ожидаемый продукт.
Подавление помех - это целая наука.
Если кратко - здесь указаны рекомендации по сведению к минимуму наводок на кварц.
Могу помочь чем смогу.
Наверно какой-то интересный вариант удаленного управления на длиииииииннннных проводах с возможностью воспроизведения макросов и подобными наворотами.
Для работы SIM900 надо 2 вывода Arduino. Имеем 14 цифровых выводов = 7 модемов. Возможно SoftwareSerial заработает и на аналоговых выводах, тогда еще 3 модема подцепите.
Вопрос из разряда - сколько грибов можно положить в корзину?
Arduino какая? Модуль какой?
В общем случае сколько будет COM портов (в том числе и виртуальных), столько и модулей подключите.
Ресурсов мало.
Я данную библиотеку вообще не использую.
Попробуйте так:
//блок считывания текущего времени и даты
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0);
Wire.endTransmission();
Wire.requestFrom(0x68, 7);
// if (Wire.available() < 7) return;
Second = bcd2dec(Wire.read() & 0x7f);
Minute = bcd2dec(Wire.read() );
Hour = bcd2dec(Wire.read() & 0x3f); // mask assumes 24hr clock
Wday = Wire.read();
Day = bcd2dec(Wire.read() );
Month = bcd2dec(Wire.read() );
Year = bcd2dec(Wire.read() ); //отсчет с 2000 года
//блок записи текущего времени и даты
Second |= 0x80; // stop the clock
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0); // reset register pointer
Wire.write(dec2bcd(Second)) ;
Wire.write(dec2bcd(Minute));
Wire.write(dec2bcd(Hour)); // sets 24 hour format
Wire.write(Wday);
Wire.write(dec2bcd(Day));
Wire.write(dec2bcd(Month));
Wire.write(dec2bcd(Year));
Wire.endTransmission();
Second &= 0x7f; // start the clock
Wire.beginTransmission(0x68);
Wire.write((uint8_t)0x00); // reset register pointer
Wire.write(dec2bcd(Second)) ;
Wire.endTransmission();
Попробуйте написать так:
#define sensePin A0
Работа в Киеве или удаленная работа?
Надо детально продумать ВСЕ ВОЗМОЖНЫЕ нестандартные ситуации (че-то включилось/не включилось, где-то датчик сработал/не сработал, что-то заело и не сдвинулось/сдвинулось) и в программе добавить действия в случае их возникновения. Это надо сделать ОБЯЗАТЕЛЬНО иначе в один "прекрасный" момент может случиться полная жопа.
Перечитал еще раз 1-й пост. У вас 0 остается от числа 100.0, так как 99.9 занимает на одно знакоместо меньше и 0 стандартными средствами не затирается. Если число будет 9.9 - будет видно 2 знака от предыдущих чисел. Вам надо либо перед выводом затирать предыдущие числа пробелами (можно просто очистить дисплей) либо нужен форматированный вывод на дисплей. Ознакомтесь http://www.c-cpp.ru/content/printf. Про оба эти метода уже писали ранее, но вы упорно изобретаете велосипед.
Кусок кода, который вы привели является вариантом форматированного вывода, только вместо одной переменной вы используете 4.
Ребята я очень всем благодарен всем за ваши ответы но поймите я не умею читать мысли, если их пишите то излагайте из в виде кода, мы же тут "программисты" всё же
Я тоже не умею читать мысли. Диапазон чисел? Какой дисплей? Какие действия с числами надо совершать?
Какой код можно написать не зная под что писать?
В 3-х вайлантах на "контакт" идет 24В переменки сразу с трансформатора, а потом уже диодный мост и все остальное. Так что мосфет не прокатит. Может еще в некоторых тоже переменку надо коммутировать.
Согласен - деление занимает много времени, но это окупается простотой работы с числом. Через lowByte() и highByte() ниче у вас не выйдет, например число больше 65355, что тогда?
Похоже мы говорим о разных вещах.
У тебя изначально дробное число с одной цифрой после запятой. Храни его в long умноженным на 10, иначе говоря младший разряд - это цифра после запятой, все остальное целая часть. Дальше смотри 2-й пост.
Опять спам повалил, наверно автор IP адрес поменял....
Я так понял нужен форматированный вывод на дисплей. Варианта 3: преобразовать число в строку как вам надо и уже ее выводить на дисплей, использовать функции вывода поддерживающие форматирование, написать что-то свое.
0. 99 - это 9.9, 157 - это 15.7 и не надо никаких 2-х, 3-х или 4-х переменных, достаточно одной, NoName вам все написал.
1. 99/10 = 9. Выводим {009} или { 9} или форматируем как надо.
2. Выводим точку {.}
3. 99 [10] = 9. выводим {9}
Результат 009.9 или 9.9
Как-то так.
Andruino nano случайно не 5-ти вольтовая?
Нужна всего одна переменная для сохранения времени, которая будет сравниваться с текущим временем. Вторая переменная для текущего времени не нужна - она и так есть.
Да. После каждого срабатывания добавляем 3 и сохраняем.
Вполне достаточно хранить только минуты.
У вас ведь есть текущее время. Добавляем к нему 3 минуты и запоминаем.
Процедура сравнивает текущее время и сохраненное, если совпадает - прогоняем цифры, берем текущее время, добавляем 3 минуты и запоминаем. Вот и вся процедура.
Ну если по простому то как-то так:
int flag0 = 0;
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop()
{
//первая кнопка
if (digitalRead(0) == HIGH && flag0 == 0)
{
digitalWrite(10, !digitalRead(10));
flag0 = 1;
}
if (digitalRead(0) == LOW && flag0 == 1)
{
flag0 = 0; //обнуляем переменную flag
}
//вторая кнопка
if (digitalRead(1) == HIGH && flag1 == 0)
{
digitalWrite(11, !digitalRead(11));
flag1 = 1;
}
if (digitalRead(1) == LOW && flag1 == 1)
{
flag1 = 0; //обнуляем переменную flag
}
//третья кнопка
if (digitalRead(2) == HIGH && flag2 == 0)
{
digitalWrite(12, !digitalRead(12));
flag2 = 1;
}
if (digitalRead(2) == LOW && flag2 == 1)
{
flag2 = 0; //обнуляем переменную flag
}
//четвертая кнопка
if (digitalRead(3) == HIGH && flag3 == 0)
{
digitalWrite(13, !digitalRead(13));
flag3 = 1;
}
if (digitalRead(3) == LOW && flag3 == 1)
{
flag3 = 0; //обнуляем переменную flag
}
}
Хотя есть и более красивые решения.
Долго не отписывал, так так прибор находится в машине, времени на эксперименты не было, а машина без него не едет.
Вобщем работает все, независимо от того где располагать тело функции и как писать с {} или без них. Это я лоханулся при написании кода и на компиляцию пошел вариант как в 1-м сообщении (без скобок после Set_Time_and_Date), но самое интересное, что компилятор не ругнулся. Видимо имя Set_Time_and_Date где-то уже объявлено в недрах системных библиотек или х.з. чем Wiring нравится Set_Time_and_Date, что он молча проглотил все это. Специально убираю любую букву из Set_Time_and_Date и, вуаля, компилятор начинает ругаться.
Ось так от х@йня, малята.
(С) Дід Панас.