İçindekiler:

Attiny85 Termometro OLED: 5 Adım
Attiny85 Termometro OLED: 5 Adım

Video: Attiny85 Termometro OLED: 5 Adım

Video: Attiny85 Termometro OLED: 5 Adım
Video: En Küçük Arduino ATTiny85|Nedir ?Nasıl Programlanır ? 2024, Ekim
Anonim
Attiny85 Termometro OLED
Attiny85 Termometro OLED
Attiny85 Termometro OLED
Attiny85 Termometro OLED

Tahmini proyecto en un termómetro pequeño y basit que muestra la temperatura aktüel, la humedad relativa ve el índice de temperatura. ATmega328p'yi, her türlü etkileşimi gerçekleştirmeyi ve ATtiny85'i bir araya getirmeyi ve bunları birleştirmeyi en iyi şekilde gerçekleştirin.

Bir süreklilik tanımı, en çok işlevli, en sık kullanılan devreler ve sonlandırmalar, genel programların yorumlanması ve yorumlanması.

Gereçler

1 x ATtiny85

1 x Arduino UNO/PRO/etc (programador del ATtiny)

1 x 128x64 pantalla I2C OLED

1 x Sensör sıcaklığı DHT22

1 x Direnç 4.7MOhm (1/4W)

1 x Kondansatör elektrolitik 0.1uF

1 x Fuente de 3.3V - 5V 10+ x Jumper'lar

Adım 1: Del Funcionamiento'nun Tanımı

OLED, özel, ikincil, bağımsız uyku dahil olmak üzere, en iyi olanaklar arasında, en büyük ve en büyük değer yargıları OLED, yeniden yapılandırma el kitabının genişletilmesi ve genişletilmesi için geçerlidir. la batería.

Yeni programların her biri için en uygun proceso: Leer temperatura -> Mostrar temperatura tr pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.

Para cada uno de esos pasos dejaremos la belediye başkanı parte del trabajo bir las librerías ya da varolanlar, yeniden icat yok. DHT sensör kitaplığı Adafruit (el IDE'de dağıtılabilir) y Tiny4kOLED ve Github'dan gelen datacute que, al parecer, el autor orijinal es datacute y, además, necesitaremos modificarla un poco luego.

El método de reinicio puede ser tanto ve botón como dos placas metálicas que se tocan para encender el eko. En kişisel olarak, en iyi şekilde etkileşime girer.

Adım 2: Devreler

devreler
devreler
devreler
devreler
devreler
devreler

En la primer görüntü, encuentra el Circuito que requerimos para programar el ATtiny85. Arduino ISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP'yi programlamak için Arduino'nun temel çizimi. ATtiny85'i yeniden programlamak için Arduino'yu yeniden yapılandırın.

El ATtiny se puede alimentar directamente del Arduino. Arduino y el ATtiny85 için en uygun ortam kullanımı.

Colocar un botón giriş pin 13 del Arduino ve 2 del ATtiny puede facilitar el hacer pruebas ya da que la pantalla no puede estar conectada cuando se programa al ATtiny.

En las görüntülere bakın. El pin SDA del ATyiny es el 0 ve SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4.

Adım 3: Programlama

Primeramente, debemos seçici "ISP olarak Arduino" ortak programcısı. ATtiny, Spence Konde'yi tavsiye ederim. Öngörülen bir sorun değil.

OptiBoot için 8 MHz interno y sin n BOD, con un reloj d e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n e n i konfigüre etme olanağı tanır. I2C'de 1MHz iletişim ve 16MHz harici harici, dijital cihazlar, tüketim enerjisiyle ilgili önemli bilgilerden yararlanılamaz.

Tiny4kOLED'in arşivlenmesi ve arşivlenmesi için gerekli değişiklikler. El arşivi değişiklikleri "font8x16.h" y o cambiado la línea 117 por el siguiente código con el fin de cambiar el símbolo ~ por ° que usaremos en °C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Devamlı bir taslak.

#include #include #include #include #define I_PINB PCINT3 #define I_PIN PB3 #define I_VECTOR PCINT0_vect #define adc_disable() (ADCSRA &= ~(1<<aden)) dönüştürücü #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); const uint8_t genişlik = 128; const uint8_t yükseklik = 64; uçucu bool döndü = yanlış; /* * * Kesinti işleyicisi * */ ISR(PCINT_VECTOR){ //interrupt her zaman uykudan kurtarılır if(digitalRead(I_PIN) == HIGH) { turn = true; // bayrağı ekranı yeniden çizecek şekilde ayarla } }void setup() { cli(); //kesmeleri kapat PCMSK |= (1 << I_PINB); GIMSK |= (1 << PCIE); pinMode(I_PIN, GİRİŞ); ben(); //kesmeleri aç adc_disable(); //dönüştürücüyü kapatarak güç tasarrufu yapın set_sleep_mode(SLEEP_MODE_PWR_DOWN); //uyku türünü derin uykuya ayarla oled.begin(width, height, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br); //oled nesnesini başlat oled.setFont(FONT8X16); //bu yazı tipi diğerinden daha iyi görünüyor drawScreen(); oled.on(); gecikme(2000); dht.begin(); döndü = doğru; // ekran çizimi için bayrak } void sleep(){ sleep_enable(); uyku_cpu(); } void loop() { if (döndü){ cli(); //kesmeleri kapat oled.on(); float h = dht.readHumidity();//dht önbellek gecikmesini sıfırlamak için yanlış okuma(2200);//dht'nin yüklenmesini bekle h = dht.readHumidity(); float t = dht.readTemperature(); float i = dht.computeHeatIndex(t, h, false); oled.setCursor(55, 1); oled.print(t); oled.print("~C"); oled.setCursor(55, 3); oled.print(h, 0); oled.print("%"); oled.setCursor(55, 5); oled.print(i); oled.print("~C"); // kütüphanede ~ sembolü ° derece sembol gecikmesi gibi görünecek şekilde değiştirildi (5000); //5 saniye göster oled.off(); döndü = yanlış; sei();//kesmeleri tekrar ekle } sleep(); //her zaman sonunda uykuya geç } void drawScreen() { //çerçeveyi ve ana metni (uint8_t y = 0; y < 8; y++) { oled.setCursor(0, y); oled.startData(); for (uint8_t x=0; x<128; x += 2) { oled.sendData(0b10101010); oled.sendData(0b011010101); } oled.endData(); } oled.setCursor(0, 0); oled.startData(); oled.sendData(0b11111111); oled.repeatData(0b00000101, genişlik - 2); oled.sendData(0b11111111); oled.endData(); for (uint8_t y = 1; y < (yükseklik - 8) / 8; y++) { oled.setCursor(0, y); oled.startData(); oled.sendData(0b11111111); oled.repeatData(0b00000000, genişlik - 2); oled.sendData(0b11111111); oled.endData(); } oled.setCursor(0, (yükseklik - 8) / 8); oled.startData(); oled.sendData(0b11111111); oled.repeatData(0b10100000, genişlik - 2); oled.sendData(0b11111111); oled.endData(); oled.setCursor(4, 1); oled.print("Sıcaklık:"); oled.setCursor(4, 3); oled.print("Hımm:"); oled.setCursor(4, 5); oled.print("Sens:"); }

4. Adım: Sonuçlar

Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar

Önemsiz bir şey, önemsiz bir şey, en az bir amplia gama de aplicaciones ve en las que podemos'un uygulanması için en iyi kontrol, en büyük günahın işlenmesidir. Kişisel bilgiler, uykunun kontrol altına alınması ve hafızanın kontrol altına alınması için mümkün değildir. Dichozamente, el programa entrado en nuestro ATtiny

OLED'ler için mevcut. GFX'in Adafruit'ten temin etmesine izin vermeme, her bir karar verilişine ilişkin karşılaştırmalı incelemeler için ayrıntılı bilgi için, her bir kütüphane ve çözümlemeler ve keşifler için mevcut

Elverişli değil. 500 yıllık süre içinde 3000 mAh (NiMH veya LiIon) için geçerli değildir. Algılayıcıyı en aza indirgemek ve azaltmak için sensörleri kontrol etmek için, gerekli olan hiçbir şeyi göz önünde bulundurmayın

Según Technoblogy.com'un en büyük işbirlikçisi, en üst düzeydeki resmi, en iyi proyecto'yu, en iyi proyecto'yu, tek başına bir imajı elde etmek için kullanıyor. El tüketim de la batería sürekliliği siendo lo suficientemente bajo como para ser un proyecto fasılabl

Adım 5: Bağlantılar Y Lecturas Relacionados

www.technoblogy.com/show?KX0&fbclid=IwAR0qu…

github.com/SpenceKonde/ATTinyCore

www.electroschematics.com/am2302-dht22-dat…

ww1.microchip.com/downloads/en/DeviceDoc/A…

embeddedthinkts.com/2016/06/06/attiny85-i…

www.instructables.com/id/ATtiny85-Interrup…

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Önerilen: