vem566 писал(а):Цепочка резисторов между землей и питанием и кнопки от каждого соединения к ноге МК. Дешево и сердито. Правда кнопок всего 5 или 6 было. Ну а в принципе можно и до хрена нацеплять.
Да, это верно. Я порой в своих самоделках такие клавы делаю. Работает. В некоторых бытаппаратах буржуи штук по 10-15 на один канал АЦП цепляют. Ну а 4 это вообще влёгкую. Единственный вопрос: может кто-то подскажет конструкцию поизящнее, чем череда проверок типа:
if (radc<0x33) NumButton=ON_OFF; //Кнопка 1 "Вкл"
//---------------------------------Кнопка 2---------------------------------------
if ((radc>=0x33) & (radc<0x66)) //Кнопка 2 "Select"
{
}
//---------------------------------Кнопка 3---------------------------------------
if ((radc>=0x66) & (radc<0x99)) //Кнопка 3 "Минус"
{
}
?
radc это сокращение от "read from ADC"
Вышел из себя.
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
CyberVad писал(а):может кто-то подскажет конструкцию поизящнее, чем череда проверок
в вашей череде проверок записаны явно лишние условия. если пороги уровней POROG1, POROG2, POROG3 и т.д. соответствуют возрастающим числам (т.е. каждый последующий порог больше предыдущего), нет нужды в проверках "с обоих краев" участка, образуемого порогами:
if(radc < POROG1){ /* обработка 1-го участка */}
else if(radc < POROG2){ /* обработка 2-го участка */}
else if(radc < POROG3){ /* обработка 3-го участка */}
...
else { /* обработка выхода за предельно допустимый уровень */ }
оператор switch вряд ли поможет, т.к. проверяет на точное совпадение значения, а не на вхождение в диапазон значений.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Да, всё так. Сейчас упростил 3 проверки - прошивка стала меньше на 8 байт )) Ну, "копейка рубль бережёт" )) А что, в старые времена приходилось за каждый байт бороться И немного быстрее будет.
Вышел из себя.
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
Select Case R
Case 0 : Exit Do
Case 620 To 650 : N = 1
Case 330 To 350 : N = 2
Case 400 To 440 : N = 3
Case 550 To 600 : N = 4
Case 300 To 329 : N = 5
End Select
Goto Nabor
Loop
End
Nabor:
Locate 1 ,C !!!!Подскажите как сделать так,чтобы к переменная (С) после каждого нажатия цифры увеличивалась на 1???!!!!!
Lcd N
For I = 1 To N
Led = 1
Waitms 50
Led = 0
Waitms 50
Next
Return
Уже многое пробовал(и incr и субпрограмму,что то не получаетя).Помогите новичку)).И заодно скиньте кто нибудь исходник омметра...
Сделал как вы говорили,но что то не выходит!!!может locate не воспринимает переменные???или просто я туплю?!И вопрос не в тему!!!Есть шанс поступить на вышку "Энергоснабжение", стоит ли??Зарплата у меня небольшая,придётся сложить зубы на полку в ближайшие 5 лет, и на мк мало времени останется.
Последний раз редактировалось shim666 Вт окт 28, 2014 02:43:24, всего редактировалось 1 раз.
Функция locate в качестве параметров допускает хоть константы, хоть переменные.
А по вопросу не в тему, так не понятно. Где зарплата большая? А где по душе?
shim666 писал(а):Вывод на дисплей набираемый номер... Дисплей от мобилы ,как вариант Ls020.
А вот этого как раз делать Вам, коллега, не советую, если Вы, конечно, не живете на юге. Поносите часок Вашу трубу в монтерской сумке на морозе и гарантировано ничего на дисплее не увидите! Уж лучше подумайте о малогабаритном многоразрядном сегментном индикаторе, хотя и тут проблемы с прожорливостью... Экономней, думаю, пара светодиодов, которые и будут Вам сигнализировать о КЗ, наличии питания в линии, полярности линии, повышенном напряжении, индикации набора(при импульсном наборе) и чего Вы еще напрограммируете
Те же грабли... Я к чему. Делал я зарядное устройство для автомобильной АБ. Имея дисплей и библиотеку к нему, сделал вывод всего на lcd. Так вот, все это хорошо и красиво работало до того момента, когда очень нужно было подзарядить батарею зимой. Оставил я это все на заряде на ночь в гараже, а утром на дисплее абсолютно НИЧЕГО! Он попросту замерз! А все дело в том, что рабочий температурный диапазон абсолютного большинства lcd начинается с 0 и выше по Цельсию. Работа ниже 0 не гарантирована. Сначала символы тускнеют, что даже подсветка не помогает, потом пропадают вообще... Вот такие дела... С зарядного я его снял и использовал семисегментники, тем минуса нормально.
Теперь о функционале. Что Вы хотите туда вложить? Если Вы делаете инструмент для линейного електромонтера, зачем усложнять ему жизнь вольтметром и тем более амперметром, что он ими будет измерять? Защита от постороннего высокого потенциала - это так. Но будете ли Вы работать на линии, зная о постороннем напряжении? А ведь одно из первых правил - приступая к работе убедится в отсутствии постороннего напряжения с помощю обязательного инструмента - ПРОВЕРЕННОГО ИНДИКАТОРА! И какой практический смысл в отображении набираемого номера? Достаточно звукового подтверждения нажатия клавиш. Если что-то и нужно измерить, например сопротивление изоляции или шлейфа, то для монтера лучше это организовать не в виде точных измерений (этим пускай занимаются работники кроса), а в виде сравнений <1кОм, <1МОм, <5МОм и т.д. Тоже и с станционным напряжением. Неплохо организовать подачу напряжения из Вашей трубы на микрофон коллеги при прозвонке кабеля в отсутствии станционного напряжения, предусмотреть два способа набора(тональный и импульсный), определение полярности, для работы со спаренными номерами, память на последний набранный номер. Ну и для продвинутых, несколько дополнительных функций, как то - генератор 800Гц/0дБ, возможность работы работы по двум линиям одновременно(по одной разговариваем, вторую меряем), автоответчик по типу станционного, измеритель интервалов(проверка дисковых номеронабирателей), часики с будильником, что-бы не пропустить обеденный перерыв ... и всего-то каких-то четыре светодиода индикации, которые светятся, мигают с разными интервалами, меняют цвет в конце концов. Да и не страшно им содержимое Вашей сумки(отвертки, бокорезы, обжимки и прочего), и падения с 6 метровой высоты. Правда в тетрис поиграть не получится!