poniedziałek, 14 kwietnia 2014

Arduino TowerPro servo SG90

Wstęp:
Do skonstruowania tego schematu potrzebujemy dowolnego servo oraz jakiegokolwiek potencjometru.
Nie musimy także pobierać żadnej nowej biblioteki do obsługi projektu, ponieważ wszystkie komendy są już wgrane w Arduino IDE co dodatkowo upraszcza sprawę.

Zasada działania:
1. Arduino odbiera analogową wartość podłączonego do pinu (A0) potencjometru (0 - 1023)
2. Wartość z potencjometru jest przeliczana na kąt obrotu servomechanizmu (0-180 stopni)
3. Obracając gałką potencjometru zmieniamy wskazania na pinie (A0) i tym samym obracamy servem.

Kod programu do servo:
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop()
{
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}

niedziela, 13 kwietnia 2014

Arduino ultradźwiękowy miernik odległości HC-SR04

Wstęp:
Kod do tego urządzenia nie należy do mnie. Szukałem na internecie najprostszego szkicu do sprawdzenia tego układu i znalazłem go na następującej stronie http://electronut.in/tag/arduino-2/ mimo wszystko pozwoliłem sobie zamieścić ten kod na tej stronie żeby w razie potrzeby móc szybko go znaleźć.

Zasada działania:
1. Czujnik HC-SR04 mierzy falami odległość do przeszkody.
2. Zmierzoną odległość (w cm) czujnik pokazuje nam na ekranie serial monitora.

Kod programu dla ultradźwiękowego miernika odległości HC-SR04
#include "Arduino.h"

int pinTrigger = 2;
int pinEcho = 4;

void setup()
{
  // initialize serial comms
  Serial.begin(9600);

  // set pins
  pinMode(pinTrigger, OUTPUT);
  pinMode(pinEcho, INPUT);
}

void loop()
{
  // send a 10us+ pulse
  digitalWrite(pinTrigger, LOW);
  delayMicroseconds(20);
  digitalWrite(pinTrigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrigger, LOW);
  delayMicroseconds(20);
 
  //  read duration of echo
  int duration = pulseIn(pinEcho, HIGH);

  if(duration > 0) {
    // dist = duration * speed of sound * 1/2
    // dist in cm = duration in us * 1 x 10^{-6} * 340.26 * 100 * 1/2
    // =  0.017*duration
    float dist = 0.017 * duration;
    Serial.println(dist);
  }
 
  // wait
  delay(200);

}

poniedziałek, 7 kwietnia 2014

Arduino miernik wilgotności podłoża

Wstęp:
Jako dodatkową informację chciałem powiedzieć o małym potencjometrze zamontowanym na płytce włączonej do układu.
Mianowicie potencjometr ten steruje dwoma diodami znajdującymi się na płytce, jego zadaniem jest zaświecenie diody w zależności od poziomu zawilgocenia płytki.
Np. można ustawić żeby dioda zaświeciła się w momencie jeśli na płytce znajdzie się choć jedna kropla wody, lub ustawić aby dioda zaświeciła się dopiero w momencie całkowitego zawilgocenia płytki.

Zasada działania:
1. Przez włożenie widełek do wody/gruntu następuje połączenie obu nóżek przez co nasze arduino odbiera na pinie analogowym  (A0) wartości pomiędzy ok 300 a 1023 informując nas o tym jak wilgotno jest w miejscu w którym znajdują się widełki.
2. Jeśli widełki są całkowicie zanurzone np. w wodzie otrzymamy wartość 300 natomiast jeśli wyjmiemy widełki z wody wartość rośnie do 1023. Nie testowałem jeszcze widełek w gruncie ale podejrzewam że będą działać równie sprawnie.

Kod programu dla miernika wilgotności podłoża:
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  delay(2000);
}

Arduino czujnik deszczu

Wstęp:
Jako dodatkową informację chciałem powiedzieć o małym potencjometrze zamontowanym na płytce włączonej do układu.
Mianowicie potencjometr ten steruje dwoma diodami znajdującymi się na płytce, jego zadaniem jest zaświecenie diody w zależności od poziomu zawilgocenia płytki.
Np. można ustawić żeby dioda zaświeciła się w momencie jeśli na płytce znajdzie się choć jedna kropla wody, lub ustawić aby dioda zaświeciła się dopiero w momencie całkowitego zawilgocenia płytki.

Zasada działania:
1. Padająca na czujnik wilgotności woda powoduje połączenie na czujniku przez co nasze arduino odbiera na pinie analogowym  (A0) wartości pomiędzy ok 300 a 1023 informując nas ile wody znajduje się na płytce.
2. Jeśli płytka jest całkowicie mokra otrzymujemy wartość 300 a jeśli całkowicie sucha to 1023, nie trzeba chyba tłumaczyć że w zależności od ilości wody można uzyskać wartości pośrednie np. częściowo zawilgacając płytkę można otrzymać np. 524 , 663 , 720 dzięki czemu mamy do dyspozycji bardzo profesjonalny czujnik deszczu.

Kod programu dla czujnika wilgoci:
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  delay(2000);

}