Analoge input = digitale output

algemene C code
Berichten: 1
Geregistreerd: 10 Feb 2021, 16:00

Analoge input = digitale output

Berichtdoor Joepl10 » 10 Feb 2021, 16:04

Hallo,

Ik ben redelijk nieuw in Arduino wereld, maar gelukkig wel handig hiermee.
Nu ben ik een code aan het maken voor een analoge input = digitale output.

Analoge input0 =5V dan moet de digitale out 7 = HIGH (zodat er een LED gaat branden)
Analoge input0 = <2V dan moet de digitale out7 = LOW (LED uit)

nu wil dit nog niet echt werken, en ik snap totaal niet waarom.
Kan iemand me dit uitleggen in mijn code?

Code: Alles selecteren
int myPin=A0;
int redPin=7;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
pinMode (redPin,OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  // print out the value you read:
  Serial.println(voltage);
  delay(250);
 if (myPin>5./1023.){
  digitalWrite (redPin,HIGH);
 }
 else if (myPin<1./1023.){
    digitalWrite (redPin,LOW);
 }
 delay(250);
}

Advertisement

Berichten: 77
Geregistreerd: 06 Okt 2012, 10:57

Re: Analoge input = digitale output

Berichtdoor Beamer » 11 Feb 2021, 18:03

Je berekent de gemeten spanning in de variable "voltage".
Verolgens gebruik je in de vergelijking "mypin". Die is gedefinieerd als A0.
En bevat dus niet de waarde die je wilt testen, die staat immers in "voltage".

Gebruikers-avatar
Berichten: 12
Geregistreerd: 24 Jan 2021, 20:37
Woonplaats: Bovenkarspel

Re: Analoge input = digitale output

Berichtdoor weirdweb » 11 Feb 2021, 19:27

Probeer eens de declaraties van de variabelen in de loop functie er buiten te zetten
Deze twee dus voor de setup functie (onder de myPin en redPin):

int sensorValue;
float voltage;

En dan in de loop functie:

sensorValue = analogRead( A0 );
voltage = sensorValue * ( 5.0 / 1023.0 );

Groetzels:
Han.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Analoge input = digitale output

Berichtdoor Gij Kieken » 11 Feb 2021, 21:44

Wat Beamer zegt klopt als een bus.
Maar waarom moeilijk als makkelijk ook kan.
Er bestaat een functie voor <https://www.arduino.cc/reference/en/language/functions/math/map/>

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Analoge input = digitale output

Berichtdoor shooter » 12 Feb 2021, 15:29

je laat voltage zien, ga daar dan ook mee verder dus
cpp code
if (voltage > 4.5)
{digitalWrite (redPin,HIGH);
}
if (voltage <2.0)
{
digitalWrite (redPin,LOW);
}

om het nog netter te maken kun je float hoog=4.5 definieren voor de setup
net als de 2.0 maar dat kun je zelf en laat hert resultaat dan aub even zien.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten