salve a tutti, vi chiedo una mano per la creazione di questo progetto arduino dove ci sono 12 diodi led rgb, e 2 puslanti. in breve volevo creare che quando si clicca il primo pulsante i led partono con un solo colore e restano cosi, invece quando si clicca il secondo pulsnate i led partono come in una palco
grazie a tutti
Buongiorno, robi90!
Benvenuto nella sezione Italiana del forum
Cortesemente, leggi attentamente il REGOLAMENTO di detta sezione:
[REGOLAMENTO] Come usare questa sezione del forum
(... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15)
e poi, come da suddetto regolamento (punto 16.7), fai la tua presentazione IN CODA ALL'APPOSITA DISCUSSIONE:
Presentazioni nuovi iscritti: fatevi conoscere da tutti! (Part 2)
spiegando bene quali esperienze hai in elettronica e in programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie
Gianluca
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento, nessuno ti risponderà (eventuali risposte, o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...
@robi90: a quanto ti ha scritto "Datman" aggiungo che doverti leggere con più attenzione il REGOLAMENTO ed in particolare il punto 16.8 (per capire dove aprire le tue discussioni) ed il punto 16.1 (per capire come possiamo aiutarti).
Per questa volta ho spostato io la tua discussione dall'area riservata "Megatopic" alla più adatta sezione "Generale".
Guglielmo.
Certo che 40 led RGB sono tanti, io penso che convenga puntare su strisce led indirizzabili, o comunque led digitali (anche singoli ammesso che si trovino) che possono essere controllati da un segnale digitale emesso da arduino.
Questi led sembrerebbero fare al caso tuo, ma resta il problema di saldarli fisicamente su un circuito stampato per poi collegarli con dei fili.
grazie, anche io avevo pensato che erano troppi ecco pk ho modificato
Per luci da palco lo standard è il DMX , una piccola lampada RGB fatta una quindicina di anni fa la trovi qua' su un mio vecchio sito DMX1
Da una vecchia lampada alogena da 100watt ho fatto un PCB con 20 led RGB regalatomi da un rappresentante AVAGO, non sono indirizzabili singolarmente, all'epoca non esistevano, ma funzionano tutt'ora, lo schema non si vede bene ma tutti le 3 stringhe da 20led sono messi in serie e alimentati da 3 generatore di corrente costante e 3 transistor npn pilotato da 3 uscite pwm provenienti dall Atmega8
Attualmente gli APA102 (che se non ricordo male sono quelli che creano meno problemi a pilotarli) o meglio ancora SK9822 (che dicono essere migliori in quanto il colore non dipende dall'alimentazione) si trovano anche in formato 5050, e sarebbe abbastanza facile farne dei pannellini da 100x100mm, che volendo si potrebbero poi anche collegare in serie, per farci poi pannelli per illuminazione grandi quanto si vuole.
Richiedono due pin, data e clock, e mi sembra che non ci siano limiti alla lunghezza della stringa pilotabile (salvo forse per la memoria richiesta della MCU in caso servano giochi di luce) ... inoltre con le attuali offerte di services come JLC, si possono fare direttamente degli stampati in alluminio monofaccia per migliorare la dissipazione e poterne mettere piu ravvicinati (l'ultima volta che ho controllato per 5 PCB in alluminio da 100x100mm singola faccia, chiedevano 4 dollari) ... con le dimensioni dei 5050 e senza esagerare troppo, dovrebbero starcene una cinquantina per pannello, fammi controllare.
grazie
OK, se volessi farti fare i circuiti, ci starebbero 49 led (7x7) tipo 5050, messi a distanze regolari, per ogni pannellino da 99x99mm (disegnarlo ci vuole poco)
Per fare pannelli piu grandi si possono usare le strip gia fatte, servirebbe lavorarci un po di piu (farsi tagliare dei pannelli in alluminio della misura voluta, su cui poi incollare le striscie tagliate a misura ed interconnesse, fargli i fissaggi, eccetera), comunque si puo fare anche in quel modo, dipende tutto da quanto ti serve che illuminino (i fari da palco per spettacoli di solito sono abbastanza potenti, ma bisogna vedere, quanto e' grande il palco, quanto devono illuminare, a che distanza rimangono dalla scena e dagli attori, e cosi via)
Ciao, Etemenanki
Non hai pensato di produrre qualcosa di utile per Arduino in piccole serie (o in kit)?
in che senso ?
Potremmo cominciare dal Fuse Rescue, ma forse hai già realizzato qualcosa per te che potrebbe essere utile ad altri. Facendosi fare gli stampati in Cina per pochi soldi, diventa facile...
Allora, chi ha parlato di Fari da palco?
La richiesta era di 40 led RGB che si riduce a 12.
L'effetto che vuole ottenere è l'effetto palco.
Totalmente diverso è il discorso fari da palco che normalmente sono dotati di lente per ridurre il fascio, ma qui icio ne sa più di me.
Per cui @robi90 toglici il dubbio, spiega meglio, coinvolgici nel tuo progetto, trova il modo di descrivere i punti salienti.
Ciao.
vi ringrazio a tutti, ora ho fatto un codice e questro thread si puo anche chiudere, se voleve vedere il codice che ho fatto scrivetelo
#include <Keypad.h>
#include <Servo.h>
// Definizione dei pin per il LED RGB
const int redPin = 4;
const int greenPin = 5;
const int bluePin = 6;
const int red1Pin = 7;
const int blue1Pin = 8;
const int green1Pin = 9;
// Definizione dei pin per il tastierino numerico
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {A2, A3, A4, A5}; // Collegare i pin del tastierino alle righe
byte colPins[COLS] = {A0, A1, 10, 11}; // Collegare i pin del tastierino alle colonne
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Variabile per tenere traccia dello stato del LED
bool ledOn = false;
bool led1On = false;
// Definizione dei pin per i servomotori
const int servo1Pin = 2;
const int servo2Pin = 3;
Servo servo1;
Servo servo2;
void setup() {
// Impostazione dei pin dei LED come output
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(red1Pin, OUTPUT);
pinMode(green1Pin, OUTPUT);
pinMode(blue1Pin, OUTPUT);
// Inizializzazione del tastierino numerico
keypad.setDebounceTime(50);
// Inizializzazione del LED
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
void loop() {
// Lettura dell'input dal tastierino numerico
char key = keypad.getKey();
if (key == '7') {
// Esegui azione per il tasto 1
// Esempio: Muovi il primo servomotore in senso orario
servo1.write(servo1.read() + 5);
} else if (key == '8') {
// Esegui azione per il tasto 2
// Esempio: Muovi il primo servomotore in senso antiorario
servo1.write(servo1.read() - 5);
} else if (key == '9') {
// Esegui azione per il tasto 3
// Esempio: Muovi il secondo servomotore in senso orario
servo2.write(servo2.read() + 5);
} else if (key == '0') {
// Esegui azione per il tasto 4
// Esempio: Muovi il secondo servomotore in senso antiorario
servo2.write(servo2.read() - 5);
}
// Controllo dello stato del LED RGB
if (key == '1') {
ledOn = !ledOn;
if (ledOn) {
// Accensione del LED con colore blu
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
} else {
// Spegnimento del LED
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
}
} else if (key == '2') {
ledOn = !ledOn;
if (ledOn) {
// Accensione del LED con colore verde
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
} else {
// Spegnimento del LED
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
}
} else if (key == '3') {
ledOn = !ledOn;
if (ledOn) {
// Accensione del LED con colore rosso
analogWrite(redPin,255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
} else {
// Spegnimento del LED
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
}
} else if (key == '4') {
led1On = !led1On;
if (led1On) {
// Accensione del secondo LED con colore rosso
analogWrite(red1Pin, 255);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
} else {
// Spegnimento del LED
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
}
} else if (key == '5') {
led1On = !led1On;
if (led1On) {
// Accensione del secondo LED con colore verde
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 255);
analogWrite(blue1Pin, 0);
} else {
// Spegnimento del LED
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
}
} else if (key == '6') {
led1On = !led1On;
if (led1On) {
// Accensione del secondo LED con colore blu
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 255);
} else {
// Spegnimento del LED
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
}
} else if (key == 'A') {
// Avvia il primo gioco di luci sul palco
runStageLights();
} else if (key == 'D') {
// Lampeggiamento dei tre colori sui due LED
ledOn = true;
led1On = true;
blinkColors();
}
}
// Funzione per eseguire il gioco di luci sul palco
void runStageLights() {
// Esegui l'effetto di luci finché il pulsante non viene premuto di nuovo
while (keypad.getKey() != 'A') {
// Rosso
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 255);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
delay(100);
// Verde
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 255);
analogWrite(blue1Pin, 0);
delay(100);
// Blu
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 255);
delay(100);
// Giallo
analogWrite(redPin, 255);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 255);
analogWrite(green1Pin, 255);
analogWrite(blue1Pin, 0);
delay(100);
// Viola
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
analogWrite(red1Pin, 255);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 255);
delay(100);
}
// Spegnimento del LED al termine del gioco di luci
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
}
// Funzione per il lampeggiamento dei tre colori sui due LED
void blinkColors() {
while (keypad.getKey() != 'B') {
// Rosso
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 255);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
delay(100);
// Verde
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 255);
analogWrite(blue1Pin, 0);
delay(100);
// Blu
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 255);
delay(100);
}
// Spegnimento dei LED al termine del lampeggiamento
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(red1Pin, 0);
analogWrite(green1Pin, 0);
analogWrite(blue1Pin, 0);
}
Ingenious Duup-Juttuli.pdf (7,6 KB)
schema eletrico
bom.pdf (8,8 KB)
se volete vedere questo e l'elenco dei componenti
Cosa intendi esattamente con effetto palco ?
Dovrei far passare un po di roba, la maggior parte di quello che realizzo per me e' di solito molto specifica, comunque posso guardare ... no, mai pensato di mettermi a vendere kit, non ho attrezzature per produrre roba in serie, pero' se ci fosse qualcosa che puo interessare potrei pubblicare schemi e stampati senza problemi.
A quanto pare, semplicemente due gruppi di LED RGB!
D'ora in poi, ignorerò tutto ciò che non è descritto con precisione.
...mi sto Standardizzando?...
@Standardoil, torna qua!