Show Posts
Pages: 1 ... 38 39 [40] 41 42 43
586  Topics / Interactive Art / Re: Interactive Audio Project on: June 25, 2011, 05:08:42 am
if i should do it, i'll be using MIDI.
every kind of button self-made, will be triggered by arduino, converted into a MIDI signal with the MIDI Library, and output to a MIDI receiver on a PC.
then the PC software would do the sound.
just search for the lot of arduino drum..
587  International / Generale / Re: consiglio SPI con standalone e rf22. on: June 23, 2011, 04:24:06 am
Grazie, per la risposta, però ho un dubbio.
nella programmazione ISP (uso il metodo tramite altra Arduino, imparato tramite la guida di Menniti) si utilizzano 4 pin:
MOSI
MISO
SCK
RESET.
più ovviamente Vcc e Gnd.

Per la comunicazione con la schedina radio, e per la sua programmazione, invece:
MOSI
MISO
SCK
NSEL
NIRQ
Vcc e GND

nella progr tramite cavetto ISP non c'è un chip select.

a questo punto, credo che durante le programmazione dell'Atmega, alla schedina radio non succede nulla, in quanto non c'è niente sui pin NSEL e NIRQ, giusto?

se mi confermi questo vado avanti a preparare il design della schedina.
altrimenti potrei mettere un deviatore direttamente sul Vcc, in maniera da togliere corrente all'RF22 mentre carico lo Sketch..
588  International / Generale / consiglio SPI con standalone e rf22. on: June 22, 2011, 06:20:55 pm
Ciao a tutti, ho bisogno di un consiglio.
Allora, ho queste schedine su cui devo mettere un atmega 328p in standalone che comunica tramite una schedina rxtx RFM22B.
ora ho bisogno di modificare spesso lo sketch, quindi volevo aggiungere sulla schedina un connettorino per programmarla tramite ISP.
il mio dubbio è questo: siccome la schedina RFM22B comunica tramite SPI, così come la programmazione del chip, quando programmo il chip, non rischio di modificare parametri anche della schedina?

Spero che qualcuno possa aiutarmi, che spostare il chip per centinaia di volte, non mi pare proprio il caso..

in caso, secondo voi, con un solo deviatore, basterebbe commutare il pin del clock (SCK) dalla schedina al connettore ISP per evitare che i dati vengano inviati ad entrambi contemporaneamente?
589  International / Generale / Re: Battery level on: June 22, 2011, 04:22:36 pm
Anzitutto grazie delle risposte.

Perdona l'ignoranza, in questo caso il condensatore a cosa servirebbe di preciso?

Lo scopo è fare da filtro per eventuali fluttuazioni rapide della tensione, o del ripple residuo, in modo da non trovarti con delle letture ADC che cambiano di continuo.
ok, capito.
Quote
Quote
ovviamente non dovrei fare nessun partitore, semplicemente nel range di lettura 0-1023 cercare la soglia giusta, vero?

Il partitore lo devi mettere perché la massima tensione in ingresso all'ADC è pari a qualche decimo volt più la tensione di alimentazione, il riferimento massimo rimane la tensione di alimentazione quindi 1023 = 3.3V.
ok, allora un partitore minimo, con rapporto tipo 10/1 ?
Quote
Quote
dovrei mettere sempre una resistenza per limitare la corrente?

Sempre meglio farlo, lo scopo non è limitare la corrente in ingresso all'ADC, è evitare di far passare troppa corrente nel caso in cui la tensione in ingresso superi il limite massimo ammesso.
qui capisco meno. almeno nel mio caso, se uso sempre lo stesso pacco batterie, e un regolatore di tensione, non vedo come possa alzarsi tanto il voltaggio.
Quote
Quote
un'ultima cosa, se la carica delle batterie scende, chessò, a 3V, all'uscita del 4833, quanto avrò? poco meno di 3V?

Il limite minimo è dato dalla tensione in uscita del regolatore sommata al drop out, solo con i numeri è difficile capire quale regolatore usi, tiro ad indovinare e diciamo che è il MAX4833 che ha un dropout massimo di 130 mV il che ci porta che la tensione minima in ingresso deve essere di 3.3+0.130 = 3.43 Volt, sotto questa tensione il regolatore cessa di comportarsi come tale.
Dovrai regolare il tuo allarme per almeno 3.5V e se parliamo di celle alcaline a 1.17v (3.5/3) le puoi considerare più che scariche.

grazie anche di questa spiegazione. in effetti i regolatori ancora li devo prendere, e non pensavo che diverse 'marche' avessero diversi dropout. però, solo per curiosità (non so come funziona dentro!) se io do 2,5V in ingresso ad un regolatore tipo il MAX4833, cosa mi devo aspettare in uscita?

e riguardo l'ulteriore consumo di corrente aggiunto che mi dici? è trascurabile?
590  International / Generale / Re: Battery level on: June 22, 2011, 12:27:27 pm
mah, il discorso e' che esistono integrati maxim, o di altri!
professionisti che studiano 8 ore al giorno, 365 giorni l'anno, questi problemi
e trovano una soluzione

Si ma non si usa un cannone per eliminare una zanzara  smiley
Visto che lo scopo è monitorare la tensione della batteria che alimenta Arduino un banale partitore resistivo collegato ad un ingresso ADC basta e avanza.
Per fare le cose fatte bene aggiungere un condensatore da 100 nf in parallelo alla resistenza tra GND e ingresso ADC e mettere una resistenza da 330 ohm, per disaccoppiare e per protezione, tra il nodo del partitore e l'ingresso ADC.
Topic interessante..
Perdona l'ignoranza, in questo caso il condensatore a cosa servirebbe di preciso?

un'altra domanda:
io ho per un progetto una serie di standalone alimentati a 3,3V (penso di usare 3 pile da 1,5V con un 4833) ognuno con la sua scheda radiotrasmettitore, per cui mi farebbe molto comodo poter accendere un leddino rosso quando la carica scende tipo sotto i 3V..
ovviamente non dovrei fare nessun partitore, semplicemente nel range di lettura 0-1023 cercare la soglia giusta, vero?
dovrei mettere sempre una resistenza per limitare la corrente?
fare una lettura ogni minuto immagino non limiti il consumo, in quanto sarebbe sempre collegata la batteria a quel pin analogico, giusto?
un'ultima cosa, se la carica delle batterie scende, chessò, a 3V, all'uscita del 4833, quanto avrò? poco meno di 3V?

Grazie, Davide.
591  Using Arduino / Networking, Protocols, and Devices / Re: RF22 Library, how to use that? on: June 19, 2011, 12:28:32 am
Thank you very much, your little help is much appreciated.

i know the problem was not with the library usage, but i wanted to ask you, 'cause maybe this way it is simpler to not explaining the usage of the library to others.

again thank you for the basic C lesson!

Davide.
592  International / Generale / Re: Servo modificato on: June 18, 2011, 10:05:27 am
bè, devi capire come funziona il Servo prima.
l'angolo è di circa 180 gradi, perchè innanzi tutto nei modelli radiocomandati di più non servirebbe, e cmq il potenziometro ha circa quell'angolo di intervento.
se ipoteticamente tu mettessi un pot multigiro, potresti comandare il motorino con più giri... ma non è semplice.
per ampliare i giri, o compri un servo multigiro, ce ne sono, anche se rari..li usano per i winch delle barche se non erro.
oppure prendi un motore qualsiasi, anche quello di un servo modificato, e ci attacchi in qualche modo un encoder, che legge l' incremento di posizione angolare. se ne trovano anche sui 20 euro circa..
593  Using Arduino / Networking, Protocols, and Devices / RF22 Library, how to use that? on: June 18, 2011, 09:54:55 am
Hi, first of all thanks to mikem for this library.
My project will see something like 10 RFM22B modules to comunicate on a theatre stage.
One is on a Arduino 2009, that receives MIDI signals from a PC (OK) and should send via RFM22B 'commands' to the other RF22s.
In this moment i'm trying to understand how to comunicate with two of them, both plugged to two stand-alone atmega328p, powered with 2 AA 1,5V batteries (2,9V or similar..).
I encountered first problems due to my lack of knowledge in programming, so i'm asking here an help to understand where i'm mistaking.

this is my client code:
Code:
#include <SPI.h>
#include <RF22.h>

RF22 rf22;

void setup()
{
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("RF22 init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb2_4Fd36
  pinMode(8, INPUT);
  pinMode(9, OUTPUT);
   
}

void loop() {
  if (digitalRead(8) == HIGH) {
    digitalWrite(9, HIGH);
    uint8_t data[] = {65};
    rf22.send(data, 1);   
    rf22.waitPacketSent();
  } 
  else if (digitalRead(8) == LOW) {
    digitalWrite(9, LOW);
  }
}

and this is my server code:
Code:
#include <SPI.h>
#include <RF22.h>

RF22 rf22;

void setup()
{
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("RF22 init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb2_4Fd36
  pinMode (9, OUTPUT);
}

void loop() {
  rf22.waitAvailable();
  uint8_t buf[RF22_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);
  int comp = int(buf);
  if (rf22.recv(buf, &len)) {
    blink1time();
    blink1time();
    blink1time();
    if (comp == 65) {
      digitalWrite (9, HIGH);
    }
    else {
      digitalWrite (9, LOW);
    }
  }
}

void blink1time() {
  digitalWrite (9, HIGH);
  delay(50);
  digitalWrite (9, LOW);
  delay(50);
}

what should happen is that if pin 8 is HIGH on one chip, it should send the byte '65', than if the server receive something it blinks a LED 3 times, and if the byte is '65', the LED should remain ON.

But what happens is that when pin 8 becomes HIGH, i can see the three blinks on the second 'station', but the LED doesn't remain ON, as it shoul be if the byte is recognized.

I have to say that i'm doing this, because, since the chips are standalone, i cannot debug seeing results in a serial monitor.

Wish you can help me in some way.
thanks!
594  Using Arduino / Audio / Re: MIDI in from pc thru USB. on: June 18, 2011, 08:10:24 am
i'm currently using an arduino 2009 as an ISP programmer. with the spare chips in a bboard done by me, just to plug the DIY cable.
595  International / Generale / Re: Servo modificato on: June 18, 2011, 07:21:48 am
allora, il servo modificato diventa un motorino dc. se non hai più il potenziometro, non c'è più il feed back di posizione, quindi non puoi più usarlo come servo, a meno di non ripristinare tutto.
ma visto il costo esiguo dei servi, questo te lo tieni modificato, vai in un negozio di modellismo e te ne compri altri.

ciao, Davide.
596  International / Generale / Re: Aiuto Libreria RF22 on: June 18, 2011, 07:09:35 am
no, scusa, hai ragionissima! è che stavo di fretta e ho copiaincollato al volo senza pensarci. sorry!

allora, c'è qualcosa che non va nel mio codice, potreste dirmi dove sbaglio?
sto facendo una prova con un pulsante su un chip, il 'send' di un byte, e alla ricezione lampeggia tre volte il LED, poi se viene letto quel byte dovrebbe rimanere il LED acceso.
  con questo codice, avvengono i tre lampeggi di ricezione 'qualcosa', ma non paragona il byte per tenere acceso il LED:

lato client:
Code:
#include <SPI.h>
#include <RF22.h>

RF22 rf22;

void setup()
{
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("RF22 init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb2_4Fd36
  pinMode(8, INPUT);
  pinMode(9, OUTPUT);
   
}

void loop() {
  if (digitalRead(8) == HIGH) {
    digitalWrite(9, HIGH);
    uint8_t data[] = {65};
    rf22.send(data, 1);   
    rf22.waitPacketSent();
  } 
  else if (digitalRead(8) == LOW) {
    digitalWrite(9, LOW);
  }
}


e lato server:
Code:
#include <SPI.h>
#include <RF22.h>

RF22 rf22;

void setup()
{
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("RF22 init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb2_4Fd36
  pinMode (9, OUTPUT);
}

void loop() {
  rf22.waitAvailable();
  uint8_t buf[RF22_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);
  int comp = int(buf);
  if (rf22.recv(buf, &len)) {
    blink1time();
    blink1time();
    blink1time();
    if (comp == 65) {
      digitalWrite (9, HIGH);
    }
    else {
      digitalWrite (9, LOW);
    }
  }
}

void blink1time() {
  digitalWrite (9, HIGH);
  delay(50);
  digitalWrite (9, LOW);
  delay(50);
}

c'è da dire che sto usando i chip standalone per poterli pilotare a 3V (2 pile AA), visto che le logiche dell'RFM22B sono a 3V, e quindi non mi è possibile fare debug su un monitor seriale.
l'unico riscontro che posso avere è far fare qualcosa al LED.

Qualcuno può gentilmente aiutarmi?

grazie, Davide.
597  International / Generale / Re: Aiuto Libreria RF22 on: June 17, 2011, 01:41:50 pm
..e se faccio così e risparmio un passaggio?
se pò ffa?

uint8_t data[] = {map(analogRead(A0),0,1023,0,255)};
rf22.send(data, sizeof(data));
598  International / Generale / Re: Aiuto Libreria RF22 on: June 17, 2011, 12:58:39 pm
ok, questo ha funzionato, o meglio lo ha compilato, adesso vedo se funziona..

byte val = map(analogRead(A0),0,1023,0,255);   
uint8_t data[] = {val};
rf22.send(data, sizeof(data));

Mi dite se è corretto?
599  International / Generale / Re: Aiuto Libreria RF22 on: June 17, 2011, 11:56:53 am
neanche così funziona..

byte val = map(analogRead(A0),0,1023,0,255);   
uint8_t data[] = (val);
rf22.send(data, sizeof(data));

mi da quest'errore:
rf22_client_pot:27: error: initializer fails to determine size of ‘data’

come si scrive questa cosa? sembra così semplice!
600  Using Arduino / Audio / Re: MIDI in from pc thru USB. on: June 17, 2011, 11:42:36 am
Thank you for the link.
I already read this link, but jumped away, because, apart from the good concept of the HID device, i found it difficoult to follow instructions about that project.
the problem is that i didn't understand so much and, in hurry, i have found simpler to build a simple MIDI Shield..
But if you can tell me, that is simler of what it appears to me, please explain to me.
thank you, Davide.
Pages: 1 ... 38 39 [40] 41 42 43