4052 интерфейс с ардуино уно
Я пытаюсь подключить демультиплексор 4052 к Arduino, но моя программа не работает, поскольку на последовательном мониторе не отображается высокий уровень, соответствующий выбранным строкам.
//выход, поступающий с выводов демультиплексора
int sensorValue0=A0;
int sensorValue1=A1;
int sensorValue2=A2;
int sensorValue3=A3;
void setup() {
Serial.begin(9600);
Serial.println("start");
//выбираем контакты A,B, подключенные к 2 и 3
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
}
void loop() {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
analogRead(sensorValue0);
//Преобразуем аналоговое показание (0–1023) в напряжение (0–5 В):
int voltage0= sensorValue0 * (5.0 / 1023.0);
Serial.println("volatge0");
Serial.println(voltage0);
}
@Poem, 👍0
Обсуждение1 ответ
Вы игнорируете значение, считанное функцией analogRead()
. Затем вы используете значение A0
(14) в сумме для расчета напряжения.
Вместо этого:
int adcReading = analogRead(sensorValue0);
int voltage0 = adcReading * (5.0 / 1023.0);
Хотя я думаю, что на самом деле вы хотели написать, в целом:
int sensorPin = A0;
int sensorValue0;//выходной сигнал, поступающий с выводов демультиплексора
int sensorValue1;
int sensorValue2;
int sensorValue3;
void setup() {
Serial.begin(9600);
Serial.println("start");
pinMode(2,OUTPUT);//выбор контактов, подключенных A, B, подключенных к 2 и 3
pinMode(3,OUTPUT);
}
void loop() {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
sensorValue0 = analogRead(sensorPin);
float voltage0 = sensorValue0 * (5.0 / 1023.0);//Преобразуйте аналоговое показание (которое находится в диапазоне 0–1023) в напряжение (0–5 В):
Serial.print("voltage0 = ");
Serial.println(voltage0);
}
Обратите внимание, что значение sensorPin
— это место, откуда вы считываете напряжение, а sensorValue0
— это место, где вы сохраняете эти показания. Также обратите внимание на использование типа float
для хранения вычисленного напряжения, поскольку int
даст вам только значения 0, 1, 2, 3, 4 или 5 в этом случае. ситуация (на самом деле, довольно бессмысленная).
на самом деле выбранные контакты демультиплексора не выбираются в соответствии с написанной программой., @Poem
Я предполагаю, что на данный момент это частично написанная программа., @Majenko
сэр, еще одна вещь, что мне следует написать, чтобы управлять двумя демультиплексорами в программе, используя вывод запрета, и активировать только один демультиплексор за раз.., @Poem
Просто используйте digitalWrite, чтобы активировать нужный мультиплексор., @Majenko
Я использовал digitalwrite(4,LOW); поскольку 4-контактный вывод Arduino подключен к контакту блокировки демультиплексора, и демультиплексор работает, но когда я не использую контакт запрета демультиплексора, демультиплексор все еще работает, не понимая, что происходит. Почему контакт запрета не работает должным образом, @Poem
я использовал CD4052BE DEMUX, @Poem
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Просматривали ли вы какие-либо руководства по использованию AnalogRead()?, @Majenko