Steckbrett1

 

Schnell mal testen ohne löten, aber auch ideal für den Versuchsaufbau ist das Steckbrett.

Das Steckbrett ist bei mir über Ebay oder meinen Shop erhältlich.

 

 

 

 

 

 

Steckbrett1a

 

Hier hab ich nochmal eingezeichnet wie die Kontakte miteinander verbunden sind.

Die Installation auf dem Steckbrett ist manchmal etwas wackelig. Die Schaltungen dürfen so auf keinen Fall in Luft, Raumfahrt und der Medizin eingesetzt werden. (Grins)

 

Fensterkontakte überwachen.

In den Beispielen ist ein Programm das einen Schalter am Digitalpin abfragt. Ich habe es etwas erweitert. Szenario alle Fenster einer Wohnung sollen überwacht werden. Beim öffnen der Wohnungstür leuchtet ein Led wenn ein Fenster oder beide Fenster auf sind.
Tür und Fenster sind mit Umschaltontakten versehen die bei geschlossene Fenster auf 0 Volt liegen. Bei offenen Fenster oder Tür werden über 10kOhm 5 Volt auf den Digitalpin gelegt. Wenn ein oder beide Fenster offen sind passiert nichts erst wenn die Tür geöffnet wird und eins oder beide Fenster offen sind wird in diesem Beispiel LED13 ( auf Arduino Uno bereits vorhanden) eingeschaltet.Kontakte

 

Hier das Programm, wer es verstanden hat kann es mühelos auf mehr Fenster erweitern:

Die Kommentare habe ich nocht nicht angepasst.

Statt Schaltern kann man zum testen auf dem Steckbrett auch einfach Kabel umstecken.

/*
Fensterüberwachung
 
 Ein Led wird eingeschaltet wenn schalter Dor und Schalter Fenster1 oder Fenster2 auf 5V liegen.
 
 
 The circuit:
 
 * 10K resistor attached to pin 2 from ground
 
 * Hinweis: auf den meisten Arduinos ist bereiz ein  LED auf der Platine mit Pin 13 verbunden.
 
 
 
 
 

modified by http://pc-rentner.de
 */

// constants won't change. They're used here to
// set pin numbers:
const int fenster1 = 2;     // the number of the pushbutton pin
const int fenster2 = 3;     // the number of the pushbutton pin
const int dor = 11;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState1 = 0;         // variable for reading the pushbutton status
int buttonState2 = 0;
int buttonState6 = 0;         // Türkontakt
void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(fenster1, INPUT);
  pinMode(fenster2, INPUT);
}

void loop(){
  // read the state of the pushbutton value:
  buttonState1 = digitalRead(fenster1);
   buttonState2 = digitalRead(fenster2);
buttonState6 = digitalRead(dor);
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState6 == HIGH and buttonState1 == HIGH or buttonState2 == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

Luftfeuchtigkeit messen mit dem dem DHT11,

ist eigentlich ganz einfach da das ganze handling und timig von einer Libary ausgeführt wird. Die Libary benennt die Pins etwas anders. Der Pin 15 im Scetch ist tatsächlich A1 am Arduino.

anschluss

Der Anschluss ist ganz einfach.

Hier der fertige Scetch mit LCD und Ausgabe aufs Terminal. Ganz einfach da hier eine Libary (von Ladyada) verwendet wird.

Der Widerstand wird auf einigen Seiten auch mit kleineren Werten angeben. Bei mir funzt es nur mit 10kOhm.

 

#include "DHT.h" //von ladyada: https://github.com/adafruit/DHT-sensor-library
#define DHTPIN 15 // benutzter ARDUINO-Pin (Analog-Pin 1)

#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8,4,5,6,7); // diese Pins werden für das Display benötigt.

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHT11-Test");

lcd.clear(); // LCD loeschen
lcd.begin(16, 2); // fuer LCD1602
dht.begin();
}

void loop() {
// Das Erfassen von Temperatur und Luftfeuchtigkeit benoetigt ca. 250 Millisekunden.
float h = dht.readHumidity();
float t = dht.readTemperature();

// Check, ob die Daten Zahlen sind, falls nicht (NaN: not a number), ist was falsch gelaufen!
if (isnan(t) || isnan(h))
{
Serial.println("Fehler beim Lesen vom DHT-Sensor");
}
else
{

Serial.print("Feuchtigkeit: ");
Serial.print(h);
Serial.print(" %\t ");
Serial.print("Temperatur: ");
Serial.print(t);
Serial.println(" Grad Celsius");

lcd.setCursor(0,0);
lcd.print("Feuchtigk.:");
lcd.print(h);
lcd.setCursor(0,1);
lcd.print("Temperatur:");
lcd.print(t);

}
}

 

Dieses Programm funktioniert.  Bitte LCD und LM35 wie in den
Kommentaren anschliessen.

/*Sketch getestet 18.07.2013*/

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define LCD_CLEAR 0b00000001
float temp;
float tempF;
int tempPin = 1;

void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
}

void loop() {
temp = analogRead(tempPin);
temp = temp * 5/1024*100;
tempF = ((temp*9)/5) + 32;
lcd.setCursor(0, 0);
lcd.print(temp);
lcd.print("C");
lcd.setCursor(0,2);
lcd.print(tempF);
lcd.print("F");
delay(5000);
lcd.clear();

Serial.println(temp);

}

Einige werden sich wundern das die Temperatur nicht stimmt. Das liegt daran das der A/D Wandler die Betriebsspannung als Referenzspannung für die Umrechnung benutzt. Wenn man den Arduino nur über die Spannung der USB Schnittstelle Betreibt ist die Spannung meistens zu niedrig.
Abhilfe schafft da ein externes Netzteil um zu gewährleisten das in der Standardprogrammierung Uref = Ubb = 5V ist. Man kann auch, wie im unterem Beispiel die interne Referenz des Atmegacontollers wählen und die liegt hier bei 1,1 V.
Die dritte Möglich wäre  eine externe Referenzspannung ( Achtung max 5V) zu wählen.    analogReference(external);

Dieses Programm funktioniert.  Ausgabe auf den Monitor in den Arduino Tools.

//Aktuell Version Mai 2014

int Sensorport = 0;
float temperatur;

void setup() {
Serial.begin(9600);
analogReference(INTERNAL); // !! Einschalten der internen //Referenzspannung. Beim Uno (Atemge 328p) 1,1Volt

}
void loop()
{ temperatur= analogRead(Sensorport);
delay(20); //warten 20ms
temperatur = temperatur * 1.1 / 10.24 ;
Serial.println(temperatur);
delay(1000);
}

 

PWM

Mit der Pulsweitenmodulation ist es möglich LEDs oder Motore stufenlos von ganz langsam bis hanz hell zu regeln. Dazu wird ein Rechtecksignalerzeugt dessen Flanke verschieden breit ist.
Bei den meisten Arduino-Boards (diejenigen mit einem ATmega168 oder ATmega328) ist das mit den Pins 3, 5, 6, 9, 10, und 11 möglich; bei einem Arduino-Mega sind das die Pins 2 bis 13. Bei älteren Arduino-Boardsmit einem ATmega8 wird analogWrite() an den Pins 9, 10, and 11 unterstützt.

Für den nachfolgen Nightridersketch reicht das nicht. Man kann PWM auch mit der Software erzeugen und an jeden Pin ausgeben. Wer Atmega schon mit anderen Sprachen programmiert hat weis das. Für Arduino gibt es eine fertige Libary die die Programmierung einfach macht und alles auf das wesentliche beschränkt.

Hier der Downloadlink für den Sketch

Hier der Downloadlink für die Libary

Ich habe den Sketch auf 10 LED's erweitert

 

 
 

Login Form