Изменение состояния отдельных пинов из масива
- Войдите на сайт для отправки комментариев
Всем здравствуйте. Чтоб вы не удивлялись последующим глупостям, предупрежу - я новичок и тему для новичков читал и кучу всего пробовал сам (при запросе приложу 100500 гавнокодов). Теперь на форум уповаю.
Ситуация такая: Есть софтовый ДТМФ декодер (сигнал с мобилы превращает в управление на УНО). В коде есть массив пинов, который при старте весь делается HIGH, а при поступлении сигнала - LOW на 1 секунду.
#include <DTMF.h> int sensorPin = A0; float n = 128.0; float sampling_rate = 8926.0; DTMF dtmf = DTMF(n, sampling_rate); float d_mags[8]; char thischar; int ledPins[] = { // Массив для 10 PINS / реле. 2, 3, 5, 6, 7, 8, 9, 10, 11, 12 // 4-Pin, используется библиотекой! }; void setup() { for (int i = 0; i <= 9; i++) { pinMode(ledPins[i], OUTPUT); // Весь массив ledPins делаем OUTPUT. digitalWrite(ledPins[i], HIGH); // Весь массив ledPins делаем HIGH. } } void loop() { dtmf.sample(sensorPin); dtmf.detect(d_mags, 506); thischar = dtmf.button(d_mags, 1800.); if (thischar) { digitalWrite(ledPins[thischar - 48], LOW); delay(1000); digitalWrite(ledPins[thischar - 48], HIGH); } }
В основном, УНО управляет релюхами, но с пинов 7,8,9 (на телефонне клавиши 4,5,6) нужно управлять серво SG90. Для этого планировал с пинов 7,8,9 на уно отдать сигнал на пины 5,6,7 на НАНО, которая через 12-й пин управляет сервой.
#include "Servo.h" Servo servoMain; // Объект Servo void setup() { servoMain.attach(12); // Servo присоединен к 12 выводу pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); } void loop() { servoMain.write(90); if(digitalRead(5) == HIGH) // Условие 1-й кнопки { servoMain.write(45); // Повернуть серво влево на 45 градусов } if(digitalRead(6) == HIGH) // Условие 2-й кнопки { servoMain.write(90); // Вернуть серво вцентр } if(digitalRead(7) == HIGH) // Условие 3-й кнопки { servoMain.write(135); // Повернуть серво вправо на 45 градусов }
Думал, что если в строках 13,17,21 напишу LOW, то серва нормально это примет, а она бестия трусится. Пробовал пины стягивать через 10к, как кнопки - не помогает.
Два варианта выхода из этой ситуации вижу
Наконец-то вопрос:
1) Как сделать, чтоб все пины, кроме 7,8,9 остались, как есть, а эти же 7,8,9 стартовали с LOW и при своем сигнале на секунду делались HIGH?
или
2) Как сделать, чтоб серва с НАНО управлялась сменой состояния с LOW на HIGH?
П.С.: Ели нуно знать зачем, то делаем с сыном катер (уже пару месяцев :) ). Сейчас заканчиваем и уперлись в руль.
Заранее блгодарен.