Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
-Elektronik Devre Tasırımı -Pcb kart basımı ve Dizgisi -İsteğe Yönelik Elektronik Projeler
Eğitim Geçmişi
Dil Becerileri
Son Forum Aktiviteleri
9atmega328p ile ssd1327 128x128 oled kullanımı
merhabalar atmega328p ile ssd1327 128x128 oled ekranı kullanıyorum ekranı direnç.net ten sipariş ettim ve orada olan dökümanlardaki kütüphaneyi kullanıyorum başarılı bir şekilde ekranı kullanabiliyorum
fakat bir kaç büyük sorunum var 1. sorunum ekranda 64x64 lük bitmap formatına çevrilmiş resimi gösteremiyorum. yaptığım araştırmalara göre kütüphanede olan bu fonksiyonu buldum
void OLED_DisPage(unsigned int Column_Num, unsigned int Page_Num)
{
unsigned int column_max = (OLED_WIDTH / XByte);//OLED_WIDTH=128 , XByte=64
unsigned int page_max = (OLED_HEIGHT / YByte);// OLED_HEIGHT=128 , YByte=16
if (Page_Num > page_max || Column_Num > column_max) {
DEBUG("Display error\r\n");
return;
}
unsigned int Dx = Column_Num % column_max;
unsigned int Dy = Page_Num % page_max;
OLED_Display(Dx * XByte, Dy * YByte, (Dx + 1) * XByte,(Dy + 1) * YByte);
//OLED_Display(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend)
}
bu fonksiyonu kullandığımda oled_display de çıkan sonuçlarda mesela OLED_DisPage(0,1) yazdığımda fonksiyon içinde OLED_Display(0,16,64,32); oluyor buda benim y eksenin 16 ile sınırlıyor fonsiyon içindeki kodda bunu daha yüksek rakam yapmaya çalıştım fakat olmadı y eksenin 16 karakterlik sınırlama koyduğu için 32x32 vb resimleri gösteremiyorum. bu ekranı daha önce kullanan var mı bu problemi nasıl çözebilirim. 2.sorunum ekran kütüphanesindeki global değişkenler atmega328p nin %82 lik kısmını kapılıyor bu da benim diğer işlemleri yapmama engel oluyor bir kaç birşey tanımladığımda %90 lara çıkıyor buda işlemcinin karasız çalışmasına sebeb oluyor atmega328p nin hafızasını mı genişletmeliyim yada kütüphanedeki gereksiz fonsiyonlar mı kaplıyor kütüphaneye baktım fakat anlayamadım. kütüphaneyi link halinde atıyorum bir kaç gündür uğraşıyorum ve çözüm bulmadım şimdiden teşekkür ederim herkese iyi çalışmalar.
https://www.waveshare.com/wiki/File:1.5inch_OLED_Moudle.7z
arduino ile ads1261 kullanımı
#include <SPI.h>
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define SLAVESELECT 10//ss
void setup()
{
Serial.begin(9600);
SPI.begin();
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
digitalWrite(SLAVESELECT,HIGH); //release chip
}
void okuma()
{
digitalWrite(SLAVESELECT,LOW); //release chip
SPI.transfer();
}
void loop()
{
okuma();
delay(1000);
}
merhabalar
arduino ile ads1261 entegresini kullanmaya çalışıyorum. entegre spı ile haberleşiyor.
Spı haberlşemesini kodda ki gibi yaptım benim resimdeki status register ının 3. bitine ulaşmam lazım spı.transfer komutunu register lara ulaşmak için kullanmak istiyorum bu komutu nasıl kullanabilirim
Şimdiden çok teşekkür ederim
ADS1261 http://www.ti.com/product/ADS1261
atmega328p ile nrf24l01 haberleşmesi
merhaba arkadaşlar atmega328p ile nrf24l01 i haberleştirdim ama joistikten gönderdiğim bilgi ile ledleri kontrol ediyorum fakat alıcı koduna joistik ortada olduğu zaman ledlerin tamamını söndür komutu veriyorum ama bu sefer ledler sönüyor fakat ledleri yak komutunu gönderdiğimde ledler yanıp yanıp sönüyor bunun için ne yapmam gerekir şimdiden teşekkür ederim.
yazdığım kod;
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10);
const byte address[6] = "RFV01";
int msg[4];
int atm[1];
int a;
int pot;
int LED0 = 5;
int LED1 = 6;
int LED2 = 3;
int LED3 = 4;
int LED4 = 7;
int LED5 = 8;
void setup(void){
Serial.begin(9600);
radio.begin();
radio.setChannel(88);
radio.setRetries(0,0);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.openReadingPipe(0, address);
radio.startListening();
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
}
void loop(void){
if (radio.available()){
delay(20);
radio.read(msg, sizeof(msg));
radio.read(atm, sizeof(atm));
if(msg[0]>1000){
delay(10);
analogWrite(LED1,msg[2]);
analogWrite(LED0,msg[2]);
digitalWrite(LED2,HIGH);//ın1
digitalWrite(LED3,LOW);//ın2
digitalWrite(LED4,HIGH);//ın3
digitalWrite(LED5,LOW); //ın4
}
if(msg[0]<80){
delay(10);
analogWrite(LED1,msg[2]);
analogWrite(LED0,msg[2]);
digitalWrite(LED2,HIGH);//ın1
digitalWrite(LED3,LOW);//ın2
digitalWrite(LED4,LOW);//ın3
digitalWrite(LED5,HIGH);//ın4
}
if(msg[1]>1000){
delay(10);
analogWrite(LED1,msg[2]);
analogWrite(LED0,msg[2]);
digitalWrite(LED2,LOW);//ın1
digitalWrite(LED3,HIGH);//ın2
digitalWrite(LED4,LOW);//ın3
digitalWrite(LED5,HIGH);//ın4
}
if(msg[1]<80){
delay(10);
analogWrite(LED1,msg[2]);
analogWrite(LED0,msg[2]);
digitalWrite(LED2,LOW);//ın1
digitalWrite(LED3,HIGH);//ın2
digitalWrite(LED4,HIGH);//ın3
digitalWrite(LED5,LOW);//ın4
}
if(atm[0]==2222)
{
delay(10);
digitalWrite(LED1,LOW);
digitalWrite(LED0,LOW);
digitalWrite(LED5,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
}
}
}
Arduino pot değerini 16×2 lcd ekrandan nasıl görüntülerim?
öncelikle analog değeri okumanız lazım potansiyometre için okuduğun değeri bir değişkene atıp onu yazdırabilirsin daha sonra komutlar için geleceği yazanlar sayfasında komutlar mevcut
Arduino alarm yapımında buzzer sorunu
öncelikle hocama katılıyorum serial.print komutunu yazarak programın nerde tıkandığını bulmalısın
nrf24l01 ile l298n motor sürücü
yani analog değerinizi verici kısmında 0'dan 1024'e kadar sınırlıyoruz 10 bit olduğu için sen o sınırladığın rakamı gönder vericiden
örneğin değerlendirmeyi vericide yaptın potansiyometren tam ortada yani bizim analog değerimiz 512 bunu gönder ve alıcıda direk bunu kullanırsın.
ARDUİNO
Merhaba iyi günler kodunuzdaki lopp() döngüsündeki kodları aynı yere kopyalayınız ve setup() içindekileride aynı şekilde yaparsınız kodunuzda sıkıntı gözükmüyor.Sadece ifadeleri biraz da düzenli kullanırsanız aklınız karışmaz ve daha net anlaşılır.