QO‘NG‘IROQ

Bu xabarni sizdan oldin o'qiganlar bor.
Yangi maqolalarni olish uchun obuna bo'ling.
Elektron pochta
Ism
Familiya
Qo'ng'iroqni qanday o'qishni xohlaysiz?
Spam yo'q

"Dare" seriyasi.

RGB qisqartmasi Qizil, Yashil, Moviy qisqartmasi sifatida, bu ranglar bilan aralashtirish orqali har qanday rangni olishingiz mumkin. RGB LED 3 ta kichik R, G, B kristallarini o'z ichiga oladi, ular yordamida biz har qanday rang yoki soyani sintez qilishimiz mumkin. Ushbu qo'llanmada biz RGB LEDni Arduino platasiga ulaymiz va uni kamalakning barcha ranglari bilan porlab turamiz.
Ushbu loyiha uchun sizga "Basic" va "Learning Arduino" to'plamlarida mavjud bo'lgan qismlar kerak bo'ladi:

  1. Arduino Uno;
  2. USB kabeli;
  3. Prototiplash taxtasi;
  4. Erkak-erkak simlar - 7 dona;
  5. Rezistorlar 220 Ohm - 3 dona;
  6. RGB LED - 1 dona;
  7. Potansiyometr.

1-rasmda ko'rsatilgan sxemani yig'amiz.

Rasm 1. Ulanish diagrammasi

Endi eskiz yozishni boshlaylik.
RGB LED kamalakning qizildan binafsha ranggacha bo'lgan barcha ranglari bilan porlashi kerak, so'ngra aylana bo'ylab qizil rangga o'ting va hokazo. Rang o'tish tezligi potansiyometr tomonidan boshqariladi. 1-jadvalda kamalakning 7 ta asosiy rangi uchun R, G, B qiymatlari ko'rsatilgan.

1-jadval. Kamalakning 7 ta asosiy rangi uchun R, G, B qiymatlari

Ranglarni aralashtirish uchun Arduino pinlaridan R, G, B LED kirishlariga kuchlanishning to'liq diapazonini etkazib berish kerak. Ammo Arduino raqamli pinga o'zboshimchalik bilan kuchlanishni chiqara olmaydi. +5V (HIGH) yoki 0V (LOW) chiqadi. Qisman kuchlanishni simulyatsiya qilish uchun PWM (Pulse Width Modulation yoki PWM) ishlatiladi.

Umid qilamanki, siz allaqachon bobni o'rgangansiz Jeremi Blumning "Arduino-ni o'rganish: Texnik sehrgarlik asboblari va usullari" kitobining 2.6-bandi, bu impuls kengligi modulyatsiyasi mexanizmini batafsil tushuntiradi.
Dasturni bajarish algoritmi:

  • Biz to'q sariq (255,125,0) qiymatiga yetguncha G ning yashil komponentining qiymatini oshiramiz,
  • Biz yetguncha yashil komponent G qiymatini oshiramiz sariq (255,255,0).
  • Qizil komponent R qiymatini yashil qiymatga (0,255,0) kamaytiramiz.
  • Boshlanish nuqtasi qizil (255,0,0).
  • Biz ko'k komponent B qiymatini ko'k rang qiymatiga (0,255,255) oshiramiz.
  • Yashil komponent G qiymatini qiymatga kamaytiring ko'k (0,0,255).
  • Qizil komponent R qiymatini binafsha rang qiymatiga (255.0.255) asta-sekin oshiring.
  • B ko'k komponentining qiymatini qizil rang qiymatiga (255,0,0) kamaytiring.

Keling, 1-bosqichga o'tamiz.

Har bir qadamdan so'ng biz rangli displeyni yozib olish uchun pauza qilamiz,

Kechikish (VIEW_PAUSE);

biz potansiyometrning qiymatini tekshiramiz va rang o'zgarishi tezligining qiymatini o'zgartiramiz.

Void setpause() ( pauza=xarita(analogRead(POT),0,1024,MIN_PAUSE,MAX_PAUSE); Serial.print("pause=");Serial.println(pauza); )

Keling, Arduino IDE-da yangi eskiz yarataylik, 1-listdagi kodni unga qo'shing va eskizni Arduino taxtasiga yuklang. Eslatib o'tamiz, Arduino IDE sozlamalarida siz plata turini (Arduino UNO) va plataga ulanish portini tanlashingiz kerak.
Ro'yxat 1

Const int RED=11; // RGB LEDning R chiqishi const int GREEN=10; // RGB LED ning G chiqishi const int BLUE=9; // RGB LEDning B chiqishi int qizil; // int yashil rangning R-komponentini saqlash uchun o'zgaruvchi; // int ko'k rangning G-komponentini saqlash uchun o'zgaruvchi; // rangning B-komponentini saqlash uchun o'zgaruvchi const int POT=A0; // potensiometr ulanishining chiqishi const int MIN_PAUSE=10; // rang o'zgarishining minimal kechikishi, ms const int MAX_PAUSE=100; // rang o'zgarishining maksimal kechikishi, ms int pauza; // joriy kechikishni saqlash uchun o'zgaruvchi const int VIEW_PAUSE=2000; // asosiy rangni aniqlash vaqti, ms void setup() ( Serial.begin(9600); ) void loop() ( // qizildan sariqgacha Serial.println("qizil - sariq"); qizil=255;yashil=0 ;koʻk=0; uchun(yashil=0;yashil<=255;green++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от желтому к зеленому Serial.println("yellow - green"); red=255;green=255;blue=0; for(red=255;red>=0;qizil--) setRGB(qizil, yashil, ko'k);<=255;blue++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от голубого к синему Serial.println("blue - blue"); red=0;green=255;blue=255; for(green=255;green>setpause();<=255;red++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от фиолетового к красному Serial.println("purple - red"); red=255;green=0;blue=255; for(blue=0;blue>kechikish (VIEW_PAUSE);

Eskizni yuklaganimizdan so'ng, biz kamalak ranglari bilan RGB LEDning rangi o'zgarishini kuzatamiz va rang o'zgarishi tezligini o'zgartirish uchun potansiyometrdan foydalanamiz (2.3-rasmga qarang).


2.3-rasm. RGB LED - kamalakning barcha ranglari

Oxirgi marta biz LED tasmasini L298 drayveri orqali Arduino-ga qanday ulashni ko'rib chiqdik. Ranglarni boshqarish dasturiy tarzda amalga oshirildi - Tasodifiy funksiya. Endi DHT 11 harorat va namlik sensori ko'rsatkichlari asosida LED chizig'ining rangini qanday boshqarishni aniqlash vaqti keldi.

Misol L298 drayveri orqali LED tasmasini ulashga asoslangan. Bundan tashqari, misolda DHT 11 sensori ko'rsatkichlarini aks ettiruvchi LCD 1602 displey qo'shildi.

Loyiha quyidagi Arduino elementlarini talab qiladi:

  1. Arduino UNO platasi.
  2. Displey LCD 1602 + I2C.
  3. Harorat va namlik sensori DHT
  4. LED tasmasi.
  5. Haydovchi L298.
  6. Quvvat manbai 9-12V.
  7. Arduino va displey uchun korpus (ixtiyoriy).

Avvalo, elektr sxemasini ko'rib chiqamiz (1-rasm). Unda yuqoridagi barcha elementlarni qanday ulash kerakligini ko'rishingiz mumkin. Sxemani yig'ish va uni ulashda hech qanday murakkab narsa yo'q, lekin ko'pchilik unutadigan bir nuanceni eslatib o'tish kerak va natijada ular Arduino bilan LED chiziqlar bilan ishlashda noto'g'ri natijalarga erishadilar.

1-rasm. Sxematik diagramma Arduino va LED tasmasini DHT 11 sensori bilan ulash

LED chizig'ining noto'g'ri ishlashiga yo'l qo'ymaslik uchun (miltillovchi, rangning mos kelmasligi, to'liq yoritilmagan va hokazo) butun kontaktlarning zanglashiga olib keladigan elektr ta'minoti umumiy bo'lishi kerak, ya'ni. Arduino boshqaruvchisining GND (tuproq) pinlarini va L298 drayverini (LED tasmasi) birlashtiring. Buni qanday qilishni diagrammada ko'rishingiz mumkin.

Namlik sensorini ulash haqida bir necha so'z. Agar siz yalang'och DHT 11 ni bog'lamasdan sotib olsangiz, birinchi va ikkinchi kontaktlar o'rtasida mos ravishda 5V va Data, nominal qiymati 5-10 kOm bo'lgan rezistorni lehimlashingiz kerak. Harorat va namlikni o'lchash diapazoni DHT 11 sensori korpusining orqa tomonida yozilgan Harorat: 0-50 daraja. Namlik: 0-80%.


2-rasm. To'g'ri ulanish namlik sensori DHT 11

Loyihaning barcha elementlarini sxema bo'yicha yig'ib bo'lgandan so'ng, biz dastur kodini yozishimiz kerak, bu esa uni barcha kerakli tarzda ishlashiga imkon beradi. Va biz kerak led tasma DHT 11 sensori (namlik) ko'rsatkichlariga qarab rangni o'zgartirdi.

DHT 11 sensorini dasturlash uchun sizga qo'shimcha kutubxona kerak bo'ladi.

Arduino va RGB dastur kodi - strip. Namlikka qarab lenta rangini o'zgartiradi.

#include #include //LCD 1602 displey bilan ishlash kutubxonasi #include //namlik va harorat sensori DHT 11 int chk bilan ishlash kutubxonasi; //o'zgaruvchi DHT11 sensoridan olingan barcha ma'lumotlarni saqlaydi; //o'zgaruvchi DHT11 sensori dht11 DHT namlik ko'rsatkichlarini saqlaydi; //DHT tipidagi ob'ekt #define DHT11_PIN 4 //DHT11 sensorining ma'lumotlar pin 4-kirishga ulangan #define LED_R 9 //kanal R uchun pin #define LED_G 10 //panel G uchun #define LED_B 11 //pin B kanali uchun / / o'zgaruvchilar rang qiymatlarini saqlaydi // har uch rangni aralashtirishda kerakli rang olinadi int led_r=0, led_g=0, led_b=0; //0x27 manzilli displey ob'ektini e'lon qilish //loyihadagi displeyni I2C platasi LiquidCrystal_I2C lcd(0x27,16,2) orqali ishlatishni unutmang; void setup() ( //displey yaratish lcd.init(); lcd.backlight(); // pinlarni chiqish sifatida e’lon qilish pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); ) void loop () ( chk = DHT.read(DHT11_PIN);//DHT11 sensoridan ma'lumotlarni o'qish //ma'lumotlarni displeyga chiqarish lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print( " C"); lcd.print("Hum: "); sensorning to'g'ri ishlashi uchun ovoz berish uchun zarur lcd.clear(); yashil agar ((hum >= 19) && (hum<= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (xum<= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (xum<= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Teglar: teglar

Ko'pgina ilovalarda, ham havaskor, ham professional, ba'zida turli xil soyalarning ranglarini yaratish kerak bo'ladi. Bunday hollarda alohida bitta rangli LEDlardan foydalanish tizimli va iqtisodiy jihatdan asossizdir. Shuning uchun bunday maqsadlar uchun RGB LEDlar ishlab chiqilgan.



RGB LED (qisqartma QIZIL, YASIL, KO'K degan ma'noni anglatadi) qizil, yashil va ko'k ranglarni ishlab chiqarishga qodir bo'lgan kristallarning birikmasidir. Ushbu kombinatsiya tufayli ushbu LEDlar 16 million rangdagi yorug'likni qayta ishlab chiqarishi mumkin. RGB LEDlarni boshqarish oson va ularni Arduino loyihalarida muammosiz ishlatish mumkin. Ushbu material Arduino yordamida RGB LEDni boshqarish misolini ko'rsatadi.


Yuqorida aytib o'tilganidek, RGB LED uch xil asosiy rangdagi kristallarning kombinatsiyasi bo'lganligi sababli, u sxemada uchta LED sifatida tasvirlangan. Strukturaviy ravishda, bunday LED har bir rang uchun bitta umumiy terminalga va uchta terminalga ega. Quyida RGB LEDni Arduino-ga qanday ulash diagrammasi keltirilgan. Sxema shuningdek, 16x2 alfanumerik LCD displeyni, potansiyometrlarni va RGB LED chiziqlari bilan ketma-ket rezistorlarni o'z ichiga oladi. Ushbu rezistorlar (R1 = 100 ohm, R2 = 270 ohm, R3 = 330 ohm) LEDlarning oqimini cheklab qo'yadi, shunda ular ishlamay qoladi. 10 KOhm qarshilikka ega o'zgaruvchan rezistorlar (potentsiometrlar) VR1-VR3 RGB LEDning qizg'inligini nazorat qilish uchun ishlatiladi, ya'ni ular qizil, yashil va ko'k ranglarning intensivligini o'zgartirib, LED rangini o'rnatish uchun ishlatilishi mumkin. kristallar. VR1 potentsiometri A0 analog kirishiga, VR2 A1 analog kirishiga va VR3 A2 analog kirishiga ulangan.



Bu holda LCD displey rang qiymatini va rang kodining o'n oltilik qiymatini ko'rsatish uchun ishlatiladi. Rang kodining qiymati LCD displeyning 1-qatorida (Rxxx Gxxx Bxxx sifatida, bu erda xxx raqamli qiymat) va o'n oltilik kod LCD displeyning 2-satrida (HEXxxxxxx sifatida) ko'rsatiladi. 100 ohm rezistor R4 LCD orqa nuriga qo'llaniladigan oqimni cheklash uchun ishlatiladi va LCD kontrastini sozlash uchun 10K ohm o'zgaruvchan VR4 rezistori ishlatiladi.


Quyida Arduino platasi va unga ulangan potensiometrlar yordamida RGB LEDning rangi o'zgarishini boshqarish imkonini beruvchi kod (eskiz) mavjud.


#o'z ichiga oladi // LCD displey LiquidCrystal lcd uchun kutubxona (7, 6, 5, 4, 3, 2); // LCD displeyni int Radj ulash uchun Arduino liniyalari; int Gadj; int Badj; int Rval=0; int Gval=0; int Bval=0; int R = 9; int G = 10; int B = 11; void setup() ( pinMode(R, OUTPUT); // 9-qator pinMode(G, OUTPUT); // 10-qator pinMode(B, OUTPUT); // 11-qator yoʻnaltirilgan chiqish lcd.begin (16,2); (0, 0 lcd.print(" R G B "); lcd.setCursor("Radj = analogRead(0); to (0-255) Gval=Gadj/4 // (0-1023) dan (0-255) oralig'ini o'zgartiring. 255) lcd.setCursor(2,0) (Rval<10) { lcd.setCursor(2,0); lcd.print("00"); lcd.print(Rval); } else if(Rval<100) { lcd.setCursor(2,0); lcd.print("0"); lcd.print(Rval); } else { lcd.setCursor(2,0); lcd.print(Rval); } lcd.setCursor(8,1); if (Rval<16) { lcd.print("0"); lcd.print(Rval, 16); } else { lcd.print(Rval, 16); } lcd.setCursor(7,0); if (Gval<10) { lcd.setCursor(7,0); lcd.print("00"); lcd.print(Gval); } else if(Gval<100) { lcd.setCursor(7,0); lcd.print("0"); lcd.print(Gval); } else { lcd.setCursor(7,0); lcd.print(Gval); } lcd.setCursor(10,1); if (Gval<16) { lcd.print("0"); lcd.print(Gval, 16); } else { lcd.print(Gval, 16); } lcd.setCursor(12,0); if (Bval<10) { lcd.setCursor(12,0); lcd.print("00"); lcd.print(Bval); } else if(Bval<100) { lcd.setCursor(12,0); lcd.print("0"); lcd.print(Bval); } else { lcd.setCursor(12,0); lcd.print(Bval); } lcd.setCursor(12,1); if (Bval<16) { lcd.print("0"); lcd.print(Bval, 16); } else { lcd.print(Bval, 16); } analogWrite(R, Rval); // ШИМ-выход для красного цвета analogWrite(G, Gval); // ШИМ-выход для зеленого цвета analogWrite(B, Bval); // ШИМ-выход для синего цвета }

Ko'p rangli LEDlar yoki ular ham deyilganidek RGB, dinamik ravishda o'zgaruvchan rangli yoritishni ko'rsatish va yaratish uchun ishlatiladi. Aslida, ular haqida hech qanday maxsus narsa yo'q, keling, ular qanday ishlashini va RGB LEDlari nima ekanligini aniqlaylik.

Ichki tuzilish

Aslida, RGB LED bitta korpusda birlashtirilgan uchta bitta rangli kristalldir. RGB nomi har bir kristall chiqaradigan ranglarga ko'ra Qizil - qizil, Yashil - yashil, Moviy - ko'k degan ma'noni anglatadi.

Bu uchta rang asosiy bo'lib, ularni aralashtirish orqali har qanday rang hosil bo'ladi, bu texnologiya uzoq vaqtdan beri televizor va fotografiyada qo'llanilgan. Yuqoridagi rasmda siz har bir kristallning yorqinligini alohida ko'rishingiz mumkin.

Ushbu rasmda siz barcha soyalarni olish uchun ranglarni aralashtirish tamoyilini ko'rasiz.

RGB LED-lardagi kristallar quyidagi sxema bo'yicha ulanishi mumkin:

Umumiy anod bilan;

Umumiy katod bilan;

Ulanmagan.

Birinchi ikkita variantda siz LEDning 4 ta pinli ekanligini ko'rasiz:

Yoki oxirgi holatda 6 ta xulosa:

Fotosuratda ob'ektiv ostida aniq ko'rinadigan uchta kristal borligini ko'rishingiz mumkin.

Bunday LEDlar uchun maxsus o'rnatish yostiqchalari sotiladi va ularda pin tayinlari ham ko'rsatilgan.

RGBW LEDlarini e'tiborsiz qoldirib bo'lmaydi, ularning farqi shundaki, ularning korpusida oq yorug'lik chiqaradigan boshqa kristal mavjud.

Tabiiyki, biz bunday LEDlar bilan chiziqlarsiz qilolmasdik.

Ushbu rasmda umumiy anodli sxema bo'yicha yig'ilgan RGB LEDli chiziq ko'rsatilgan, yorug'lik intensivligi quvvat manbaining "-" (minus) ni boshqarish orqali o'rnatiladi.

RGB tasmasining rangini o'zgartirish uchun maxsus RGB kontrollerlari - lentaga berilgan kuchlanishni o'zgartirish uchun qurilmalar ishlatiladi.

Mana RGB SMD5050 pinout:

Va lentalar, RGB lentalari bilan ishlashning maxsus xususiyatlari yo'q, hamma narsa bitta rangli modellar bilan bir xil bo'lib qoladi.

LED chiziqlarini lehimsiz ulash uchun ulagichlar ham mavjud.

Mana 5 mm RGB LEDning pinouti:

Yorqinlikning rangi qanday o'zgaradi

Rangni sozlash kristallarning har biridan nurlanishning yorqinligini sozlash orqali amalga oshiriladi. Biz allaqachon ko'rib chiqdik.

Lenta uchun RGB tekshirgichi xuddi shu printsip asosida ishlaydi, u quvvat manbaining salbiy terminalini boshqaradigan mikroprotsessorni o'z ichiga oladi - uni mos keladigan rang sxemasidan ulaydi va o'chiradi. Odatda boshqaruvchiga masofadan boshqarish pulti kiradi. Nazoratchilar turli xil imkoniyatlarga ega, ularning o'lchamlari bunday miniatyuradan boshlab bunga bog'liq.

Ha, bunday kuchli qurilma quvvat manbai o'lchamidagi holatda.

Ular lentaga quyidagi sxema bo'yicha ulanadi:

Lentadagi yo'llarning kesimi lentaning keyingi qismini u bilan ketma-ket ulashga imkon bermaganligi sababli, agar birinchisining uzunligi 5 m dan oshsa, ikkinchi qismni to'g'ridan-to'g'ri RGB kontrolleridan simlar bilan ulashingiz kerak. .

Ammo siz vaziyatdan chiqib ketishingiz mumkin va tekshirgichdan 5 metr masofada qo'shimcha 4 simni tortib olmaysiz va RGB kuchaytirgichidan foydalaning. Uning ishlashi uchun siz faqat 2 ta simni (ortiqcha va minus 12V) cho'zishingiz yoki eng yaqin 220V manbadan boshqa quvvat manbaini, shuningdek oldingi segmentdagi 4 ta "ma'lumot" simini (R, G va B) ulashingiz kerak. boshqaruvchidan buyruqlar olish uchun kerak bo'ladi, shunda butun tuzilma teng ravishda porlaydi.

Va keyingi segment allaqachon kuchaytirgichga ulangan, ya'ni. u oldingi lenta qismidagi signaldan foydalanadi. Ya'ni, lentani to'g'ridan-to'g'ri uning yonida joylashgan kuchaytirgichdan quvvatlantirishingiz mumkin va shu bilan asosiy RGB kontrolleridan simlarni yotqizish uchun pul va vaqtni tejashingiz mumkin.

Biz o'z qo'llarimiz bilan RGB-ledni sozlaymiz

Shunday qilib, RGB LEDlarni boshqarishning ikkita varianti mavjud:

Mana, Arduino va boshqa mikrokontrollerlardan foydalanmasdan, 1A gacha tokni etkazib bera oladigan uchta CAT4101 drayverlaridan foydalangan holda sxemaning versiyasi.

Biroq, endi kontrollerlar juda arzon va agar siz LED tasmasini tartibga solishingiz kerak bo'lsa, tayyor variantni sotib olish yaxshiroqdir. Arduino bilan sxemalar ancha sodda, ayniqsa siz rangni qo'lda o'rnatishingiz mumkin bo'lgan eskiz yozishingiz mumkin yoki berilgan algoritmga muvofiq ranglarni tanlash avtomatik bo'ladi.

Xulosa

RGB LEDlar qiziqarli yorug'lik effektlarini yaratishga imkon beradi, ular ichki dizaynda, maishiy texnika uchun yorug'lik va televizor ekranini kengaytirish effekti uchun ishlatiladi; Ular bilan ishlashda an'anaviy LEDlardan alohida farqlar yo'q.

Uch rangli LED kamalakning barcha ranglari bilan porlashi mumkin! Qabul qiling, bu oddiy LEDni miltillashdan ko'ra qiziqroq
Arduino bilan tanishishning uchinchi darsini boshlaylik.

Uskunaning ulanishi:
Aslida, uch rangli LED bitta paketdagi uchta LED (qizil, yashil va ko'k) dir. Biz uni qizil, yashil va ko'k ranglarning yorqinligi va intensivligining turli darajalarida ishlatsak, biz yangi ranglarni olamiz.

LEDning chetida kichik bir burchak bor, bu kalit, u qizil LEDning oyog'iga ishora qiladi, keyin umumiy, keyin yashil va ko'k.

QIZIL LED oyog'ini 330 ohm rezistorga ulang. Rezistorning boshqa uchini Arduino pin9 portiga ulang.

Umumiy pinni GND ga ulang.

Yashil oyoqni 330 ohm qarshilikka ulang.

Rezistorning boshqa uchini Arduino pin10 portiga ulang.

BLUE oyoqni 330 ohm rezistorga ulang.

Rezistorning boshqa uchini Arduino pin11 portiga ulang.

Quyidagi rasmda yig'ilgan sxemaga ega non taxtasi va non panelidan keladigan simlar bilan Arduino taxtasi ko'rinishi ko'rsatilgan.

ArduinoKit tajriba to'plami
№3 tajriba uchun dastur kodi:

Qolgan narsa dasturni USB kabel orqali Arduino-ga yuklab olishdir. Uchinchi LED RGB darsi bilan eskizni yuklab oling - yuqoridagi maqolada.



QO‘NG‘IROQ

Bu xabarni sizdan oldin o'qiganlar bor.
Yangi maqolalarni olish uchun obuna bo'ling.
Elektron pochta
Ism
Familiya
Qo'ng'iroqni qanday o'qishni xohlaysiz?
Spam yo'q