Работа с мультиплексором
- Войдите на сайт для отправки комментариев
Добрый день!
Ребят, подскажите пожалуйста! У меня есть необходимость управлять сервоприводами (подключены 8 серво при помощи сдвигового регистра 74HC595) при помощи фоторезисторов (их тоже 8, подключены к мультиплексору 4051) путём преобразования процента освещённости фоторезистора в процент поворота сервопривода.
Управляется всё то дело с Arduino Uno на базе Atmega 328. А теперь сама проблема: ардуинка имеет толь 6 аналоговых входов, мне пока что необходимо минимум 8, и поэтому стал использовать мультиплексор. Для начала просто тренировался получать на компьютер данные с контроллера (8 фоторезисторов с мультиплексором) - всё работало отлично! Но вот когда стал уже полученные значения (с фоторезисторов подключенных через мультиплексор к контроллеру) использовать в контроллере и расчитывать угол поворота сервоприводов - то одним фоторезистором я почему то управляю всеми сервоприводами.....
Вот код прошивки ардуинки:
#include <LineDriver.h> #include <SPI.h> #include <SPI_Bus.h> #include <ServoExt.h> #define S0 2 #define S1 3 #define S2 4 SPI_Bus shreg(_8bit, 10); Servo servos[8] = { &shreg, &shreg, &shreg, &shreg, &shreg, &shreg, &shreg, &shreg }; void setup ( ) { pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(10, OUTPUT); for (int i = 0; i < 8; i++) { servos[i].attach(i); } Serial.begin(9600); } void loop ( ) { for ( int i = 0 ; i < 8 ; i++) { digitalWrite(S0, (i >> 0) & 0x01); digitalWrite(S1, (i >> 1) & 0x01); digitalWrite(S2, (i >> 2) & 0x01); int Z = analogRead(A0); int val = (Z/10.24)*1.8; servos[i].write(val); } }
Помогите пожалуйста сделать управление таким что бы каждый фоторезистор управлял своим сервоприводом.
Народ, кто то может помочь?
... - то одним фоторезистором я почему то управляю всеми сервоприводами.....
Вот код прошивки ардуинки:
Что означают параметры в SPI_Bus shreg(_8bit, 10); ?
Эта команда назначает SS-slave select (CS-chip select) ?
for
(
int
i = 0; i < 8; i++)
20
{
21
servos[i].attach(i);
22
}