راه اندازی ماژول OLED و واحد SPI با آردوینو

مقدمه

در این جلسه قصد داریم راه اندازی ماژول OLED و واحد SPI با آردوینو رو آموزش بدیم ، SPI مخفف ( Serial Peripheral Interface ) و به معنی واسط  برنامه ریزی سریال میباشد ، این ارتباط یک نوع ارتباط سنکرون میباشد و برای راه اندازی آن نیاز به پالس مشترک داریم ، ارتباط SPI یک ارتباط چهار سیمه میباشد و با چهار پایه زیر ارتباط SPI برقرار میشود .

1_SS  : یا Slave Select به ما اجازه انتخاب Slave های مختلف را میدهد.

2_MISO : از این پایه برای ارسال داده فرمانگیر به فرمانده استفاده میشود.

3_MOSI : از این پایه برای ارسال داده از فرمانده به فرمانگیر استفاده میشود.

4_SCK : تامین پالس مشترک.

ماژول OLED و واحد SPI با آردوینو

در ارتباط SPI نیز مانند I2C یک قطعه به عنوان فرمانده یا MASTER و  قطعه دیگر که میتواند میکروکنترلر یا دیوایس باشد به عنوان فرمانگیر  یا SLAVE  میباشد .

ماژول OLED و واحد SPI با آردوینو

نحوه اتصال چند دیوایس در ارتباط SPI

ماژول OLED و واحد SPI با آردوینو

  راه اندازی ارتباط سریال آردوینو

توابع کتابخانه SPI

برای ارتباط SPI  از کتابخانه SPI.h استفاده میشود .

دستور ()begin : این دستور پایه های مربوط به SPI رو مقدار دهی میکند یعنی  چهار پایه ایی که در بالا معرفی کردیم رو از جالت ورودی و خروجی خارج میکند و در مد SPI قرار میدهد.

نکته : پایه SS رو باید به عنوان خروجی تعریف کرد زیرا میخوام روی آن یا مقدار 1 منطقی یا 0 منمطقی قرار گیرد .

دستور()setBitOrder : دستور برای مشخص کردن ارسال LSB بیت کم ارزش یا MSB بیت پرارزش از این دستور استفاده میشود .

دستور ()setDataMode : از این دستور برای مشخص کردن لبه ی پایین رونده یا بالا روند از این دستور استفاده میشود .

;(setDataMode(MODEX

 

Mode Capture Output Edge Clock Phase (CPHA) Clock Polaruty (CPOL) Mode
Rising Faling 0 0 SPI_MODE0
Faling Rising 1 0 SPI_MODE1
Faling Rising 0 1 SPI_MODE2
Rising Faling 1 1 SPI_MODE3

 

دستور()setClockDivider : برا مشخص کردن تقسیم فرکانسی .

;(setClockDivider(SPI_CLOCK_DIV4 : فرکانس کاری برد آردوینو 4MGHZ باشذ با این دستور فرکانس را تقسیم بر 4 میکند . خودمون هم به صورت دستی میتوانیم مقدار را مشخص کنیم .

دستور SPISettings : برای تنظیم کردن سه تا مد بالا از این دستور استفاده میشود .

Syntax

(SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0

دستور()end : برای تمام کردن ارتباط از این دستور استفاده میشود .

دستور ()transfer : از این دستور برای ارسال و دریافت  داده استفاده میشود .

  آموزش میکروکنترلر STM8 به صورت رجیستری - پروژه چشمک زن

شکل اتصالات

ماژول OLED و واحد SPI با آردوینو

نمونه کد ارتباط SPI

کد Master

 

#include <SPI.h>

void setup() {
Serial.begin(9600);
digitalWrite(SS,HIGH);
SPI.begin();

SPI.setClockDivider(SPI_CLOCK_DIV8);
}

void loop() {
char c;
digitalWrite(SS,LOW);
for (const char * p = "Powerelec.ir\r";c = *p;p++)
{
SPI.transfer(c);
Serial.print(c);
}
digitalWrite(SS,LOW);
delay(1000);
}

 

کد Slave

 

#include <SPI.h>
char buff [50];
volatile byte B;
volatile boolean A;

void setup() {
Serial.begin(9600);
pinMode(MISO,OUTPUT);
SPCR |= _BV(SPE);
A = false;
SPI.attachInterrupt();
}

ISR (SPI_STC_vect)
{
byte c = SPDR;
if (B < sizeof buff)
{
buff[B++]=c;
if (c=='\r')
A = true;
}
}

void loop() {
if (A)
{
A = false;
Serial.println(buff);
}
}

 

ماژول OLED و واحد SPI با آردوینو

پروژه نمایش دما روی Oled ssd1306 SPI

قطعات مورد نیاز

1_ Arduino

[promotion id=”2809″ ]

 

2_Oled ssd1306 SPI

3_ DHT11

ماژول OLED و واحد SPI با آردوینو

کد پروژه

#include<SPI.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiSoftSpi.h"
#define CS_PIN 7
#define RST_PIN 8
#define DC_PIN 9
#define MOSI_PIN 11
#define CLK_PIN 13
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
SSD1306AsciiSoftSpi oled;

void setup() {
Serial.begin(9600);
Serial.print("Powerelec.ir");
dht.begin();
oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, CLK_PIN, MOSI_PIN, RST_PIN);
oled.setFont(Callibri11_bold);

}

void loop()
{

float t = dht.readTemperature();
float h = dht.readHumidity();
oled.setCursor(0,0);
oled.set2X();
oled.println("Temp:");
oled.setCursor(65,0);
oled.set2X();
oled.println(t);
oled.setCursor(120,0);
oled.println("c");
oled.setCursor(0,4);
oled.set2X();
oled.println("Hum:");
oled.setCursor(55,4);
oled.set2X();
oled.println(h);
oled.setCursor(110,4);
oled.println("%");

}

نتیجه

ماژول OLED و واحد SPI با آردوینو

رمز فایل : powerelec.ir

tags, , , , , , , , , , , , , , , , , , , , , , , , ,
راه اندازی ماژول ساعت و واحد I2C با آردوینو
اختراعات مهندسین الکترونیک علیه کرونا

برای حمایت از ما! لطفا این مطلب را به اشتراک بگذارید

پست های مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست
خانه
درباره ما
ارتباط با ما
جستجو