Projekt termometru z Arduino na Atmege128

Zrobiłeś coś fajnego z wykorzystaniem Arduino? Pochwal się tym!
ODPOWIEDZ
gasper94
Młodszy majsterkowicz
Posty: 2
Rejestracja: 16 sty 2016, 00:52

Projekt termometru z Arduino na Atmege128

Post autor: gasper94 » 16 sty 2016, 00:58

Mam pytanie czy dałoby się przerobić ten program :
#include <LiquidCrystal.h>
#define tempe_pin A0 // podajemy piny z czujnikami temperatury
int tempepin;
float tempe; // zaokrąglamy liczbę zmienno przecinko-wą
unsigned long czas;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{

lcd.begin(16, 2);

}
void loop() {
czas = millis();

tempe = analogRead(tempe_pin); //odczytujemy wartość z czujnika
tempe = (5.0 * tempe * 100.0)/1024.0; // wyliczmy temperaturę i przypisujemy do zmiennej
lcd.print("temp dom:"); // wyświetlamy tekst
lcd.print(tempe); // wyświetlamy zmienną
delay (1500); //czekamy 1500 milisekund
lcd.clear(); // czyścimy ekran

}

Pod Atmege128 oczywiście przy użyciu Eclipse oraz czy ktoś jest w stanie wytłumaczyć mi jak mniej więcej miałbym to zrobić ?

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 16 sty 2016, 15:03

Dałoby się. Musiałbyś napisać program w języku c lub c++ (a nie w języku arduino). Różnic jest sporo...
gasper94
Młodszy majsterkowicz
Posty: 2
Rejestracja: 16 sty 2016, 00:52

Re: Projekt termometru z Arduino na Atmege128

Post autor: gasper94 » 16 sty 2016, 18:23

Wiem że pewnie prosze o dużo ale czy byłby w stanie ktoś podany wyżej plik przerobić na język C nie koniecznie pod mikrokontroler podany w temacie ?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 18 sty 2016, 09:14

Nie chcesz się sam nauczyć?
Na jakim czujniku jest ten termometr?
stiven
Złota rączka
Posty: 1581
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Projekt termometru z Arduino na Atmege128

Post autor: stiven » 18 sty 2016, 11:34

Na atmegę128.
stiven
Złota rączka
Posty: 1581
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Projekt termometru z Arduino na Atmege128

Post autor: stiven » 18 sty 2016, 13:27

MrLewerence pisze:Język C to zupełnie inny język w porównaniu do C++.
Tak naprawdę C++ zawiera w sobie całe C. C++ poza pewnymi udogodnieniami, to głównie rozszerzenie obiektowe C. To co my piszemy programując w arduino, to w rzeczywistości jest język C (i przy okazji C++), wszystkie pętle, warunki, deklarowanie zmiennych, to wszystko to już było w C, ale za to większość bibliotek jest napisana z wykorzystaniem klas (klasy wprowadziło C++) i my inicjalizując jakiś moduł, najczęściej tworzymy obiekt klasy, która zadeklarowana jest w bibliotece i później korzystamy z jej funkcji (czyli tzw. metod klasy).

Dla nas problemem nie powinien być sam język, tylko w skrócie to, że inaczej się programuje.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 18 sty 2016, 13:55

Akurat ten program da się w miarę łatwo "przepisać" w c. Chciałem przekonać autora do podjęcia własnej próby.
Jedyną niewiadomą dla mnie jest, czy załączona biblioteka do wyświetlacza zadziała. Ale gotowca nie chcę podać, wolę pomóc w rozwiązaniu problemu
stiven
Złota rączka
Posty: 1581
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Projekt termometru z Arduino na Atmege128

Post autor: stiven » 18 sty 2016, 14:05

No właśnie, bo ta biblioteka jest na pewno napisana w C++, tu jest opisana i do ściągnięcia inna biblioteka dla lcd do programowania w C https://electrosome.com/interfacing-lcd ... el-studio/
No i teraz wiedzieć jeszcze jak się robi odczyt analogowy bezpośrednio, a nie gotową funkcją jak w arduino i można przerabiać.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 18 sty 2016, 14:23

Sterownik do uproszczonej obsługi wyświetlacza dostępny na tej stronie:
http://radzio.dxp.pl/hd44780/hd44780_av ... norw_c.htm
Od razu z opisem podłączenia.
stiven
Złota rączka
Posty: 1581
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Projekt termometru z Arduino na Atmege128

Post autor: stiven » 18 sty 2016, 14:33

Aha, bo tamta biblioteka, co dałem linka, potrzebuje wszystkich pinów wyświetlacza, tu o 4 mniej.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 18 sty 2016, 15:00

I w tej Twojej jest więcej funkcji, będzie zajmowała więcej pamięci.
W tej co podałem są podane konkretne piny, można je zmienić w pliku .h
Awatar użytkownika
Marhef
Złota rączka
Posty: 1079
Rejestracja: 18 lis 2011, 02:18

Re: Projekt termometru z Arduino na Atmege128

Post autor: Marhef » 19 sty 2016, 11:19

gasper, chcesz się tego nauczyć? Czy gotowca dostać?
sok73
Młodszy majsterkowicz
Posty: 9
Rejestracja: 20 lis 2015, 16:39

Re: Projekt termometru z Arduino na Atmege128

Post autor: sok73 » 19 sty 2016, 20:04

Nie wiem co to za czujnik ale widać, że opiera się na pomiarze napięcia.

Kod: Zaznacz cały

#include <avr/io.h> 
#include <util/delay.h>
#include "HD44780.h"
#include <stdio.h>

//Definicja wejscia ADC
#define ADCIN PC5 //pin pomiarowy
#define VREF 2.56 //napiecie odniesienia

 
int main(void) 
{
	//float rozdzielczosc=VREF/1024;
	char wynik[4];
	float vol=0;
	
	LCD_Initalize();
	LCD_Clear();
	LCD_WriteText("ADC roz:10bit");
	//inicjacja ADC
	ADCSRA=(1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);
	//wybor Vref=2,56
	ADMUX=(1<<REFS0)|(1<<REFS1)
	//wybor kanalu do pomiaru
	|(1<<MUX2)|(1<<MUX0);//PC5
	DDRC &=~ (1<<ADCIN);
	
	for(;;)
	{
		ADCSRA|=(1<<ADSC);
		while(ADCSRA & (1<<ADSC));
		
		LCD_GoTo(1,1);
		LCD_WriteText("    ");
		vol=VREF*ADC/1024;

		sprintf(wynik,"U=%1.2f [V]",vol);
		LCD_GoTo(1,1);
		LCD_WriteText(wynik);
		_delay_ms(1000);
	}

    return 0; 
}//main
Oto mój kod do pomiaru napięcia i wyświetleniu wyniku na LCD 2x16 znaków. Kod pisałem już dawno ale powinien działać bo działał dawno temu. W załączniku biblioteka H44780. Tam jest opisane podłączenie pinów które możesz sobie edytować.
Ja to robiłem na Atmega8.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ODPOWIEDZ

Strony partnerskie: