Şimdi Ara

Arduino projesi acil yardım lütfen!!!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
206
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arduino projesi acil yardım lütfen!!!

    Bir proje ödevim var ve rgb led ile arduino mega bağlantısının nasıl yapılacağını bilemiyorum. Bana bu konuda yardımcı olun lütfen. Özellikle fritzing çizimi ile yardımcı olabilirseniz çok sevinirim. Projeyi teslim etmem için sayılı günlerim kaldı.

    Projenin orjinal linki :https://www.instructables.com/id/Light-Up-Disco-Table/
    diğer link ise :https://projehocam.com/rgb-led-disko-isikli-masa/

    ARDUİNO KODU :

    #include "FastLED.h"

    #define NUM_STRIPS 6 // şerit sayısı
    #define NUM_LEDS 6 // şerit başına led sayısı

    CRGB leds[NUM_STRIPS][NUM_LEDS]; // LED nesnesini kurar
    CRGB edgeLEDs[8];

    // TANIM RENKLERİ (not: R B G, R G B DEĞİL)
    // temel renkler
    #define red 0xff0000
    #define coral 0xff3333
    #define pink 0xff7700
    #define purple 0x99ff00
    #define indigo 0x55ff00
    #define blue 0x00ff00
    #define teal 0x0077ff
    #define green 0x0000ff
    #define lime 0x6600ff
    #define yellow 0xbb008f //0x8f008f
    #define orange 0xff0077

    // soluk hafif renkli
    #define paleBlue 0x11ff99//0x33ff99
    #define paleOrange 0x883399//0xff3399
    #define paleYellow 0x58338f//0x8f338f

    // loş hafifçe aydınlatılmış demektir
    #define dimPurple 0x226600//0x224400
    #define dimIndigo 0x118800//0x114400

    // çeşitli beyaz tonlar
    #define white 0x7affff//0xffffff
    #define whiteHalf 0x234444//0x444444
    #define whiteQuarter 0x001111
    #define coolWhite 0xccffcc
    #define warmWhite 0xff66cc

    #define nolight 0x000000


    // koşu paternleri için değişkenler
    unsigned long pattern[5];
    int length;
    int frames;
    int framerate;
    int edgeLength;


    // button stuff için değişkenler (geri dönüşlü)
    const int buttonPin = 2; // basmalı pimin sayısı
    volatile const int limit = 7; // düğme sayacını sıfırlamak için; en yüksek durum kodu
    volatile int counter = 0;
    volatile int state = LOW;
    int old_counter = 0;


    void setup(){
    FastLED.addLeds<TM1803, 8>(leds[0], NUM_LEDS); // ilk sıradaki ledleri kontrol etmek için pin 8'i atar
    FastLED.addLeds<TM1803, 9>(leds[1], NUM_LEDS);
    FastLED.addLeds<TM1803, 10>(leds[2], NUM_LEDS);
    FastLED.addLeds<TM1803, 11>(leds[3], NUM_LEDS);
    FastLED.addLeds<TM1803, 12>(leds[4], NUM_LEDS);
    FastLED.addLeds<TM1803, 13>(leds[5], NUM_LEDS);

    FastLED.addLeds<TM1803, 7>(edgeLEDs, 8); // kenar ledleri

    pinMode(buttonPin, INPUT);
    attachInterrupt(0, changeLED, RISING); // kesme, düğmeye basıldığında sayacı artırır

    Serial.begin(9600);
    delay(100);
    }


    void loop() {

    Serial.println(counter);
    Serial.println(old_counter);

    if (old_counter != counter){ // durum değişiyorsa, rengin taşınmasını önlemek için ledleri temizleyin
    clearLEDs();
    if (counter ==4){
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü
    leds[y] = whiteHalf; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }
    for (int z = 0; z<8; z++){
    edgeLEDs[z] = whiteHalf;
    }
    }
    delay(100);
    }

    old_counter = counter;

    switch (counter){
    // her desen için durum; renkleri ve kare hızını tanımla

    case 0: // serin kırık dalga: kenar aynı renkteki dalgadır
    {long pattern[] = {purple, indigo, blue, teal, green, teal, blue, indigo};
    length = sizeof(pattern)/sizeof(long); // dizi uzunluğunu hesaplar
    frames = length; // kalıpların dizinin bir tam dönüşü olduğunu farz etmek
    framerate = 200;

    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    // set top colors
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü

    leds[y] = pattern[(x+y+i)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }

    //if (state == HIGH){ // düğmesine basıldığında durumdan çıkar
    //state = LOW;
    //break; }

    // kenar renkleri ayarla
    for (int z = 0; z<8; z++){
    edgeLEDs[z] = pattern[(x+z)%length];
    }

    if (state == HIGH){ // düğmesine basıldığında durumdan çıkar
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }}
    break;

    case 1: // sıcak katı dalga: kenar aynı renkteki dalgadır
    {long pattern[] = {coral, red, orange, yellow, orange, red};
    length = sizeof(pattern)/sizeof(long); // dizi uzunluğunu hesaplar
    frames = length; // kalıpların dizinin bir tam dönüşü olduğunu farz etmek
    framerate = 200;

    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü

    leds[y] = pattern[(x+y)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }
    //if (state == HIGH){
    //state = LOW;
    // break; }

    // kenar renkleri ayarla
    for (int z = 0; z<8; z++){
    edgeLEDs[z] = pattern[(x+z)%length];
    }

    if (state == HIGH){ // düğmesine basıldığında durumdan çıkar
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }}
    break;

    case 2: // kuyruklu yıldız tipi desen (ileri geri): kenar kuyruklu yıldızla aynı renkteki dalgadır
    {long pattern[] = {nolight, nolight, nolight, nolight, nolight, nolight, white, paleYellow, paleOrange, nolight, nolight, nolight, nolight, nolight, nolight};//nolight, nolight, nolight, nolight, nolight, nolight, whiteQuarter, whiteHalf, white, nolight};
    length = sizeof(pattern)/sizeof(long); // dizi uzunluğunu hesaplar
    frames = length; // kalıpların dizinin bir tam dönüşü olduğunu farz etmek
    framerate = 75;

    long edgePattern[] = {white, white, paleYellow, paleYellow, paleOrange, paleOrange};
    edgeLength = sizeof(edgePattern)/sizeof(long);


    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    // even strips
    if (i%2 == 0){
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü

    leds[y] = pattern[(x+y)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }

    //FastLED.show();
    // delay(framerate);
    }

    if (state == HIGH){
    break; }

    // odd strips
    if (i%2 != 0){
    for (int y = 0; y<NUM_LEDS; y++){ // loop through leds

    leds[NUM_LEDS-y-1] = pattern[(x+y)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }

    //FastLED.show();
    // delay(framerate);
    }

    if (state == HIGH){
    break; }

    // edge leds
    for (int z = 0; z<8; z++){
    edgeLEDs[z] = edgePattern[(x+z)%edgeLength];
    }

    if (state == HIGH){
    //state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }

    if (state == HIGH){
    state = LOW;
    break; }
    }}
    break;

    case 3: // beyaz dalgaların - işler: kenar dalgaların devamıdır
    {long pattern[][10]={{nolight, nolight, nolight, nolight, nolight, nolight},
    {nolight, nolight, nolight, nolight, nolight, nolight},
    {nolight, nolight, white, white, nolight, nolight},
    {nolight, white, nolight, nolight, white, nolight},
    {white, nolight, nolight, nolight, nolight, white},
    {nolight, nolight, nolight, nolight, nolight, nolight}};

    /*long pattern[][10]={nolight, nolight, nolight, nolight, nolight, nolight},
    {nolight, nolight, nolight, nolight, nolight, nolight},
    {nolight, nolight, white, white, nolight, nolight},
    {nolight, white, nolight, nolight, white, nolight},
    {white, nolight, nolight, nolight, nolight, white},
    {nolight, nolight, nolight, nolight, nolight, nolight}}; works, length = 10, frames = 6*/

    length = 6;
    frames = 6;
    framerate = 200;

    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    for (int i = 0; i<NUM_STRIPS/2; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü
    // ayna çerçevelerini aynı çerçevelerde olacak şekilde ayarlama
    leds[y] = pattern[(x+i)%frames][(y)%length]; // 0-2 iplikçikleri için doğru
    leds[(NUM_STRIPS -1) - i][y] = pattern[(x+i)%frames][(y)%length]; // iplikler 3-5 için doğru
    }
    }
    for (int z = 0; z<8; z++){ // kenar ledleri
    if (x == (frames-1)){
    edgeLEDs[z] = white;
    }
    else{
    edgeLEDs[z] = nolight;
    }
    }

    if (state == HIGH){
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }
    }
    break;

    case 4: // sözde rastgele parıldayan - sürekli: kenar parıldayarak dahil edilir
    {framerate = 200;

    int i = random(NUM_STRIPS+1); // rastgele bir şeritten rastgele bir yol seç
    int y = random(NUM_LEDS);

    int z = random(10);

    if (z%2 == 0){
    if (i<=NUM_STRIPS){
    leds[y] = dimIndigo; // bazen açtı
    }
    else{
    edgeLEDs[y%8] = dimIndigo;
    }
    }
    else{
    if (i<=NUM_STRIPS){
    leds[y] = whiteHalf; // bazen kapalı
    }
    else{
    edgeLEDs[y%8] = whiteHalf;
    }
    }

    FastLED.show();
    delay(framerate);}

    break;

    case 5: // sözde rasgele pırıltı - kısa: kenar pırıltıya dahil edilir
    {framerate = 200;

    int i = random(NUM_STRIPS+1); // rastgele bir şeritten rastgele bir yol seç
    int y = random(NUM_LEDS);

    if (i<=NUM_STRIPS){
    leds[y] = paleBlue; // LED'i açın
    }
    else{
    edgeLEDs[y%8] = paleBlue;
    }
    //leds[y] = paleBlue; // ledi aç

    FastLED.show(); // renk göster
    delay(framerate);

    if (i<=NUM_STRIPS){
    leds[y] = nolight;
    }
    else{
    edgeLEDs[y%8] = nolight;
    }
    //leds[y] = nolight; // ledi kapat

    FastLED.show();
    delay(framerate);}

    break;

    case 6: // "rain": edge is solid soft white
    {long pattern[] = {white, whiteHalf, whiteQuarter, nolight, nolight, nolight, nolight, nolight, nolight, nolight, nolight, nolight, nolight};

    length = sizeof(pattern)/sizeof(long); // dizi uzunluğunu hesaplar
    frames = length-1;
    framerate = 100;

    int i = random(NUM_STRIPS); // rastgele bir şerit seç
    int j = random(10);



    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    if (j%2 ==0){ // even, along strips
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü
    leds[y] = pattern[(x+y+5)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }

    else { // odd, across strips
    for (int y = 0; y<NUM_LEDS; y++){
    leds[y] = pattern[(x+y+5)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }


    for (int z = 0; z<8; z++){ //loop through edge leds
    edgeLEDs[z] = whiteHalf;
    }

    if (state == HIGH){
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }}
    break;

    case 7: // Gökkuşağı modu: kenar desenlerin devamıdır
    {long pattern[] = {red, orange, yellow, green, blue, indigo, purple};
    length = sizeof(pattern)/sizeof(long); // dizi uzunluğunu hesaplar
    frames = length; // kalıpların dizinin bir tam dönüşü olduğunu farz etmek
    framerate = 100;

    // solid wave
    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü

    leds[y] = pattern[(x+y)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }

    for (int z = 0; z<8; z++){
    edgeLEDs[z] = pattern[(x+z)%length];
    }

    if (state == HIGH){ //düğmesine basıldığında durumdan çıkar
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }

    // broken wave
    for(int x = 0; x < frames; x++) { // kareler arasında döngü
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü
    leds[y] = pattern[(x+y+i)%length]; // diziden belirli led için otomatik olarak renk ayarlama
    }
    }

    for (int z = 0; z<8; z++){
    edgeLEDs[z] = pattern[(x+z)%length];
    }

    if (state == HIGH){ // düğmesine basıldığında durumdan çıkar
    state = LOW;
    break; }

    FastLED.show();
    delay(framerate);
    }}
    break;

    }
    }


    void changeLED(){ // kesme işlevi
    static unsigned long last_interrupt_time = 0;
    static unsigned int debounce_delay = 300;
    unsigned long interrupt_time = millis();

    if (interrupt_time - last_interrupt_time > debounce_delay){ // geri dönüş için gecikme
    counter ++; // sayacı artırmak
    state = HIGH; //durumu değiştir, böylece davalar kapanacak
    if (counter > limit){ // sayacı w / in limitinde tutar (bunun yerine% yapabilir)
    counter = 0;
    }
    last_interrupt_time = interrupt_time;
    }
    }


    void clearLEDs(){ // turns off all leds
    for (int i = 0; i<NUM_STRIPS; i++){ // şeritler arasında döngü
    for (int y = 0; y<NUM_LEDS; y++){ // ledleri arasında döngü
    leds[y] = nolight; // diziden belirli led için otomatik olarak renk ayarlama
    }
    FastLED.show();
    }
    for (int z = 0; z<8; z++){ //kenar ledleri boyunca döngü
    edgeLEDs[z] = nolight;
    }
    FastLED.show();
    }







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.