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); 
}

, 👍0

Обсуждение

Просматривали ли вы какие-либо руководства по использованию AnalogRead()?, @Majenko


1 ответ


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