نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
آموزش ساختش رو نمیزارید دوست عزیز
بچه ها این گیرنده رادیو هست با lcd رنگی موجود در فروشگاه که مقدار صدا را هم میشه کم و زیاد کرد و روی نمایشگر مشاهده کرد. راحته . اینم بگم این برنامه را من اختصاصی برای یک کاری درست کردم و تعداد کانال های دریافتی را کم و در موج های فری تنظیم کردم . این برنامه ساده شده دستگاه زیر هست

اینم برنامه :
#include <SPI.h>
#include <Wire.h>
#include "TFT_22_ILI9225.h"
#define TFT_RST 8
#define TFT_RS 9
#define TFT_CS 10 // SS
#define TFT_SDI 11 // MOSI
#define TFT_CLK 13 // SCK
#define TFT_LED 3 // 0 if wired to +5V directly
TFT_22_ILI9225 tft = TFT_22_ILI9225(TFT_RST, TFT_RS, TFT_CS, TFT_LED);
int ch, sensorValue,CH1;
#define TEA5767_mute_left_right 0x06
#define TEA5767_MUTE_FULL 0x80
#define TEA5767_ADC_LEVEL_MASK 0xF0
#define TEA5767_STEREO_MASK 0x80
int old_frequency=-1;
int frequency=8770;
byte old_stereo=0;
int ch_old = 1;
int VOL = 1;
byte stereo=1;
byte old_mute=1;
byte mute=0;
byte old_signal_level=1;
byte signal_level=0;


unsigned long last_pressed;

void setup()
{
Wire.begin();
TEA5767_set_frequency();
pinMode(A0, OUTPUT);
digitalWrite(A0, 1);
tft.begin();
tft.clear();
tft.drawRectangle(0, 0, tft.maxX() - 1, tft.maxY() - 1, COLOR_MAGENTA);
tft.drawRectangle(2, 2, tft.maxX() - 3, tft.maxY() - 3, COLOR_MAGENTA);
tft.setOrientation(3);
tft.setFont(Terminal12x16);
tft.drawText(35, 70, "Blue", COLOR_BLUE);
tft.setFont(Terminal12x16);
tft.drawText(90, 70, "Sky ", COLOR_YELLOW);
tft.setFont(Terminal12x16);
tft.drawText(130, 70, "2016", COLOR_RED);
tft.setFont(Terminal6x8);
tft.drawText(70, 90, "FM Receiver", COLOR_GREEN);
tft.setFont(Terminal6x8);
digitalWrite(A0, HIGH);
delay(2000);
tft.clear();
tft.drawRectangle(0, 0, tft.maxX() - 1, tft.maxY() - 1, COLOR_YELLOW);
tft.drawRectangle(2, 2, tft.maxX() - 4, tft.maxY() - 3, COLOR_YELLOW);
tft.fillRectangle(4, 30, 217, 30, COLOR_YELLOW);
tft.setFont(Terminal6x8);
tft.drawText(80, 8, "SETTING", COLOR_WHITE);
tft.drawText(10, 160, "AUX1 MIC USB AUX2 LIN", COLOR_WHITE);
tft.setBackgroundColor(COLOR_BLACK);
tft.setFont(Terminal12x16);
tft.fillRectangle(4, 150, 217, 150, COLOR_YELLOW);

}



void loop() {
TEA5767_read_data();
tft.setFont(Terminal12x16);
int sensorValue = analogRead(A2);
ch = sensorValue/50; // 16-Kanalversion (0-15)
if (ch != ch_old)
{
if (ch == 0) { frequency=8770; tft.drawText(50, 80, "Channel: 1 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:87.7 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 2) { frequency=8790; tft.drawText(50, 80, "Channel: 2 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:87.9 " ,COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 3) { frequency=8810; tft.drawText(50, 80, "Channel: 3 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:88.1 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 4) { frequency=8830; tft.drawText(50, 80, "Channel: 4 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:88.3 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 5) { frequency=8850; tft.drawText(50, 80, "Channel: 5 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:88.5 ", COLOR_YELLOW);TEA5767_set_frequency(); }
else if (ch == 6) { frequency=8870; tft.drawText(50, 80, "Channel: 6 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:88.7 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 7) { frequency=8890; tft.drawText(50, 80, "Channel: 7 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:88.9 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 8) { frequency=10670; tft.drawText(50, 80, "Channel: 8 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:106.7 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 9) { frequency=10690; tft.drawText(50, 80, "Channel: 9 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:106.9 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 10) { frequency=10710; tft.drawText(50, 80, "Channel: 10 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:107.1 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 11) { frequency=10730; tft.drawText(50, 80, "Channel: 11 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:107.3 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 12) { frequency=10750; tft.drawText(50, 80, "Channel: 12 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:107.5 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 13) { frequency=10770; tft.drawText(50, 80, "Channel: 13 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:107.7 ", COLOR_YELLOW); TEA5767_set_frequency(); }
else if (ch == 14) { frequency=10790; tft.drawText(50, 80, "Channel: 14 ", COLOR_YELLOW);tft.setFont(Terminal6x8); tft.drawText(7, 17, "FRQ:107.9 ", COLOR_YELLOW); TEA5767_set_frequency(); }
}

int sensorValue1 = analogRead(A3);
CH1 = sensorValue1/55; // 16-Kanalversion (0-15)
if (CH1 != VOL)
{
if (CH1 == 0) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:10 ", COLOR_YELLOW); }
else if (CH1 == 1) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:20 " ,COLOR_YELLOW); }
else if (CH1 == 3) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:30 ", COLOR_YELLOW); }
else if (CH1 == 4) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:40 ", COLOR_YELLOW); }
else if (CH1 == 5) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:50 ", COLOR_YELLOW); }
else if (CH1 == 6) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:60 ", COLOR_YELLOW); }
else if (CH1 == 7) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:70 ", COLOR_YELLOW); }
else if (CH1 == 8) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:80 ", COLOR_YELLOW); }
else if (CH1 == 9) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:90 ", COLOR_YELLOW); }
else if (CH1 == 10) { tft.setFont(Terminal6x8); tft.drawText(160, 17, "VOL:100 ",COLOR_YELLOW); }

}


}

unsigned char frequencyH = 0;
unsigned char frequencyL = 0;

unsigned int frequencyB;

unsigned char TEA5767_buffer[5]={0x00,0x00,0xB0,0x10,0x00};

void TEA5767_write_data(byte data_size){


Wire.beginTransmission(0x60);

for(byte i=0;i<data_size;i++)
Wire.write(TEA5767_buffer[i]);

Wire.endTransmission();
}

void TEA5767_mute(){

if(!mute){
mute = 1;
TEA5767_buffer[0] |= TEA5767_MUTE_FULL;
TEA5767_write_data(2);
// TEA5767_buffer[0] &= ~TEA5767_mute;
// TEA5767_buffer[2] |= TEA5767_mute_left_right;
}
else{
mute = 0;
TEA5767_buffer[0] &= ~TEA5767_MUTE_FULL;
TEA5767_write_data(2);
// TEA5767_buffer[0] |= TEA5767_mute;
// TEA5767_buffer[2] &= ~TEA5767_mute_left_right;
}

// TEA5767_write_data(3);
}

void TEA5767_set_frequency()
{
frequencyB = 4 * (frequency * 10000 + 225000) / 32768;
TEA5767_buffer[0] = frequencyB >> 8;
if(mute)TEA5767_buffer[0] |= TEA5767_MUTE_FULL;
TEA5767_buffer[1] = frequencyB & 0XFF;

TEA5767_write_data(5);
}

int TEA5767_read_data() {

unsigned char buf[5];
memset (buf, 0, 5);

Wire.requestFrom (0x60, 5);

if (Wire.available ()) {
for (int i = 0; i < 5; i++) {
buf[i] = Wire.read ();
}

stereo = (buf[2] & TEA5767_STEREO_MASK)?1:0;
signal_level = ((buf[3] & TEA5767_ADC_LEVEL_MASK) >> 4);

return 1;
}
else return 0;
}