INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Mechaniczny termometr
Witam wszystkich czytelników. Kiedyś zrobiłem sobie prosty termometr. Temperatura była wyświetlana na wyświetlaczu LCD. Zacząłem go udoskonalać dodając automatyczne podświetlenie i alarm wysokiej temperatury. Dzisiaj wpadłem na pomysł aby zrobić coś podobnego tylko zamiast wyświetlacza użyć serwomechanizmu. Kiedyś ten pomysł wydawał mi się nie do wykonania. Ale teraz po 2 latach oswajania się i programowania w Arduino coś cię nauczyłem oraz podjąłem wyzwanie i tym oto sposobem powstał ten artykuł. Nie rozpisywałem się zbytnio aby artykuł był przejrzysty. Proszę o sugestie w komentarzach.
Potrzebne elementy :
- Arduino (w moim przypadku UNO)
- serwomechanizm
- Czujnik temperatury tmp36
- płytka CD z naklejoną podziałką
- płytka stykowa
Na płytkę CD należy nakleić podziałkę z temperaturą, którą możesz narysować lub wydrukować. Ważne jest to aby podziałka utworzyła kąt 180* czyli była narysowana na połowie płyty. Poszczególne temperatury powinny być umieszczone od siebie w równych odstępach.
Wzór :
Podłączenie :
- Skrajne nóżki termometru należy podłączyć pod GND i Vcc, a środkową pod pin A0.
Należy pamiętać o podłączeniu termometru. Niewłaściwe podpięcie zasilania może go uszkodzić.
- Serwomechanizm jest podłączony pod pin 9.
Kalibracja :
Przed prawidłowym ustawieniem podziałki musisz w Serial porcie (monitorze szeregowym) odczytać aktualną temperaturę. Po odczytaniu temperatury możesz z kalibrować podziałkę z aktualnym położeniem serwa. ( Na serwomechanizm można nakleić strzałkę). Wartość serwa będzie wzrastała lub malała wraz z wartością podawanej aktualnie temperatury. Czas na program.
Program Arduino :
#include <Servo.h> // biblioteka Servo myServo; const int czujnikTemp = A0; // termometr pin A0 int odczyt; int katObrotu; // kąt obrotu void setup() { myServo.attach(9); // servo pin 9 Serial.begin(9600); } void loop() { odczyt = analogRead(czujnikTemp); float napiecie = (odczyt/1024.0) * 5.0; float temperatura = (napiecie - 0.5) * 100; katObrotu = map(temperatura, -10.0, 40.0, 0, 180); // temperatura a kąt obrotu myServo.write(katObrotu); Serial.print("temperatura: "); // obecna temperatura Serial.print(temperatura); Serial.println(); delay(1000); // opóźnienie }
W programie w linijce :
katObrotu = map(temperatura, -10.0, 40.0, 0, 180);
została podana najniższa temperatura -10 a najwyższa 40. Jeśli temperatura otoczenia przekroczy te wartości to serwo będzie w lewym lub prawym skrajnym położeniu. Jeśli macie inną podziałkę możecie sobie zamienić te temperatury.
delay(1000); // opóźnienie
Ustawiłem 1 sekundę opóźnienia. Jeśli nie chcecie aby serwo cały czas się przesuwało to możecie ustawić np. na 5 sekund.
Zdjęcia :
Miłej zabawy ;)
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
ehhhhh, identyczna rzecz była na forbocie, nie wysiliłeś się. Gdybyś wgrał to na atmege, włożył w jakąś obudowę i dał wskazówkę to by było fajnie, ale tak to….
Ten wpis to zwykły plagiat.
http://strefakursow.pl/kursy/elektronika/kurs_arduino_-_od_podstaw.html
Czyli nie wpadł na pomysł, tylko skopiował go z kursu ;) Na dodatek opublikował już kiedyś bardzo podobny wpis na majsterkowo.
No i mamy plagiatora… skopiowane jest wszystko…
Nawet perfidnie “zamazany” znaczek Strefy kursów z tarczy – jak się już korzysta z czyjejś pracy (nawet tak trywialnej jak tarcza) to wypadało by chociaż wspomnieć o tym
i pomyśleć, że jeszcze za pierwszym razem pomagałem jemu w kodzie, a on po prostu ŹLE PRZEPISAŁ go z filmu…
“Ale teraz po 2 latach oswajania się i programowania w Arduino coś cię nauczyłem oraz podjąłem wyzwanie”
To jest wyzwanie?
Przypisywać sobie cudzą pracę?
Arduino… tak się po prostu nie robi…