Mit Infrarotsensor mein Handy ansteuern

Hallo zusammen,

wir möchten eine Alarmanlage bauen, die mittels eines Infrarotsensors ein altes Handy ansteuert und mich dann auf meinem Smartphone anruft.

Hardwaretechnisch haben wir alles fertig geschaltet, was fehlt ist der richtige Befehl.
Wir können schon die Spannung auslesen mittels analogRead. Die Werte befinden sich zwischen 0,13 und 4,85 V.

Nun möchten wir, dass bei Überschreitung von 4 V pins angesteuert werden.
Nun unser code bis jetzt.

int ledPin = 1; // LED connected to digital pin 13

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // sets the digital pin as 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);
}

digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}

Es müsste jetzt nur quasi festgelegt werden, wann pin 1 angesteuert wird.
Irgendein Befehl der befiehlt, "ab 4 V beim analogRead" pin1 high.

Kann uns da jemand helfen?

Liebe Grüße

Pin 1 ist TX der seriellen Schnittstelle! Den kannst du dafür nicht verwenden

Ansonsten:

if(voltage > ....)
{
       //an
}
else
{
        //aus
}

Wo ist da das Problem?

Vielen vielen Dank!!!

Ok jetzt haben wir natürlich ein neues Problem...

int call = 8;                 // LED connected to digital pin 13
int keypad5 = 2;
// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(A0,INPUT);
  pinMode(call, OUTPUT);      // sets the digital pin as output
  pinMode(keypad5,OUTPUT);
digitalWrite(keypad5,LOW);
}

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


if(voltage > 4.00)
{digitalWrite(keypad5,HIGH);



}
else
{digitalWrite(keypad5,LOW);
  
//aus
}

Problem, die Taste keypad5 wird sobald man den Arduino anschließt gestartet.
Legt man dann auf, wird der sensor nicht erkannt und die Taste nicht angesteuert...

Mit pinMode(keypad5, OUTPUT) wird das auch nichts.

Bitte den Sketch in Code-Tag veröffnentlichen. # in der Toolbar

Ok jetzt haben wir natürlich ein neues Problem…
int call = 8; // LED connected to digital pin 13

… dass der Kommentar nicht zum Code passt,
mal abgesehen davon, dass call gar nicht mehr vorkommt, das also kein wirkliches Problem ist :wink:

Problem, die Taste keypad5 wird sobald man den Arduino anschließt gestartet.
Legt man dann auf, wird der sensor nicht erkannt und die Taste nicht angesteuert…

Ich weiss nicht wie eine taste “gestartet” wird. und was beim “Auflegen” aus Arduino-Sicht passiert.

Allerdings dauert es nach reset eine kleine Zeit, bis der Pin 2 ( keypad5) niederohmig low ist.
Wenn das stört, dann brauchst du evtl. einen Pulldown-Widerstand. Und/oder solltest erklären, wie das Ganze elektrisch funktionieren soll.

Was muss denn sonst dort hin? Ich möchte doch die 5 anwählen ?

Ach, hab mich vertan. Du willst die Taste 5 auf dem Handy drücken damit. Wie wollst du die Ansteuerung überhaupt machen? Optokoppler ?

Eine Alarmanlage ist das aber nicht wirklich :wink: Sowas baut man nicht in “funktionsfähig” für ein paar Euro.

Alarmanlage ist nun funktionsfähig, lediglich ist sie quasi nur ein einziges mal scharf.
gibt es eine go back to start funktion oder solch ein befehl ^^ ?

Go Back gibts nicht, gibt nur goto und das nutzt man nicht, bzw sollte es auf jedenfall vermeiden.

Du musst halt den Status zurücksetzen. Hab meine Brille nicht auf, kann deinen laufen Sketch nur unscharf sehen.

Hier ist der Code und unser Konstrukt, funktioniert halt einmal einwandfrei und muss danach neu gestartet werden.
Irgendeinen Tipp, wie ich wieder zum Anfang komme?
Kann mir nicht erklären, warum der Loop nicht wieder startet…

loop() läuft schon durch. Es schadet aber nichts wenn du die Pins am Ende des Vorgangs wieder auf Low setzt.