Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 24 dicembre 12, 00:44   #1 (permalink)  Top
User
 
L'avatar di gRiNgO
 
Data registr.: 13-04-2009
Messaggi: 402
grazie mille e complimenti per la competenza!
__________________
Parkzone T-28 // miniK 230 fpv racer // Axial Wraith // Truggy Hilux
// Axial SCX10 Rubicon
gRiNgO non è collegato   Rispondi citando
Vecchio 24 dicembre 12, 01:13   #2 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
Citazione:
Originalmente inviato da gRiNgO Visualizza messaggio
grazie mille e complimenti per la competenza!
Comunque nel tuo programma vedo due cosucce che non mi piacciono proprio...
la prima usare un float.... non serve
500/1024 = 0.488 approssimiamolo a 0.48
uint16_t temp;
temp=analog_read(analog_pin);
temp=((temp*100)/48);
siccome tuttavia temp può arrivare a 1024 temp *100 eccederebbe 65535
allora riscriviamo come:
temp=((temp*25)/12);
a questo punto temp contiene la temperatura moltiplicata per 100
ti lascio il compito a casa per capire come dividerla e metterci il punto.
Suggerimento... lavora sulla stringa prodotta da itoa.

se comunque insisti nel usare i float:
Con il tuo codice:
Dimensione del file binario dello sketch: 4.904 bytes (su un massimo di 32.256 bytes)

sostituisci quell' 5.0*temp*100.0 con 500.0 *temp
Dimensione del file binario dello sketch: 4.892 bytes (su un massimo di 32.256 bytes)

12 bytes risparmiati....

Comunque....
regola numero uno: non usare float se non ci sei costretto
regola numero due: per quanto possa essere buono un compilatore, l'ottimizzazione è meglio se la fai tu, non fare due moltiplicazioni se puoi farne una...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766

Ultima modifica di romoloman : 24 dicembre 12 alle ore 01:22
romoloman non è collegato   Rispondi citando
Vecchio 17 aprile 13, 23:46   #3 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Citazione:
Originalmente inviato da CarloRoma63 Visualizza messaggio
Ho appena ordinato il Mega2560 e lo schermo LCD 16x2
In attesa che mi arrivi mi leggerò tutte le pagine di questo 3D.
Nel frattempo, qualcuno ha un link ad un tutorial online?

Grazie

Carlo
Ci sono i forum,
http://arduino.cc/forum/
C'è anche una sezione in italiano. E poi ci sono i libri, io ho iniziato con uno di quelli.




Sent from my Xoom using Tapatalk HD
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 18 aprile 13, 08:34   #4 (permalink)  Top
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.806
Citazione:
Originalmente inviato da Tom_1971 Visualizza messaggio
Ci sono i forum,
Index - Arduino Forum
C'è anche una sezione in italiano. E poi ci sono i libri, io ho iniziato con uno di quelli.




Sent from my Xoom using Tapatalk HD
Grazie!

Carlo
__________________
Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
I miei modelli: http://www.youtube.com/results?search_query=carloroma63
CarloRoma63 non è collegato   Rispondi citando
Vecchio 22 aprile 13, 12:56   #5 (permalink)  Top
User
 
L'avatar di ArTex
 
Data registr.: 02-05-2006
Residenza: Torino
Messaggi: 449
Ciao,

vorrei farvi una domanda da ignorante e forse un pò da presuntuoso! HAhaha!

Ho acquistato e ho già fritto il mio primo arduino UNO ora ne ho due funzionanti...

E mi sono subito reso conto che la quantità di memoria e la possibilità di far fare molte operazioni insieme è un pò difficile ma mi doamando, essendo collegato a un PC ma non c'è il modo di far ragionare il PC e far caricare il programma giusto ad arduino? Lo sò caricare il programma è in qualche modo lento però mi sembra di usare un motore di una ferrari e far partire un motorino (scooter)?!?

Certo che una domanda del genere son la farei sul forum di arduino... Se poi cos'ho pensato è una castroneria riposo il fisco sulla mensola!

Grazie a chiunque mi tolga questo dubbio dubbioso ... Marco.
__________________
son nato dopo l' uovo e la gallina... Garage: non sono le cose a fare il modellista.
ArTex non è collegato   Rispondi citando
Vecchio 22 aprile 13, 13:09   #6 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
Citazione:
Originalmente inviato da ArTex Visualizza messaggio
Ciao,

vorrei farvi una domanda da ignorante e forse un pò da presuntuoso! HAhaha!

Ho acquistato e ho già fritto il mio primo arduino UNO ora ne ho due funzionanti...

E mi sono subito reso conto che la quantità di memoria e la possibilità di far fare molte operazioni insieme è un pò difficile ma mi doamando, essendo collegato a un PC ma non c'è il modo di far ragionare il PC e far caricare il programma giusto ad arduino? Lo sò caricare il programma è in qualche modo lento però mi sembra di usare un motore di una ferrari e far partire un motorino (scooter)?!?

Certo che una domanda del genere son la farei sul forum di arduino... Se poi cos'ho pensato è una castroneria riposo il fisco sulla mensola!

Grazie a chiunque mi tolga questo dubbio dubbioso ... Marco.
Se sei nello stretto devi prendere un processore più grande tipo ATMEGA 2560
Ti assicuro comunque che con una buona ottimizzazione di codice di cose in 32K se ne fanno parecchie.
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 22 aprile 13, 13:32   #7 (permalink)  Top
User
 
L'avatar di ArTex
 
Data registr.: 02-05-2006
Residenza: Torino
Messaggi: 449
Rieccomi,
io in realtà stò cercando di imparare e volevo riassemblare un mio vecchio robottone alto 50 Cm... Pensavo compro i pezzi lo rimonto e per proverò a programmare... Non vorrei fare una domanda mulfiforum ma le risposte che ho avuto sono discordanti e non sò se c'è della malizia ma mi è stata data risposta del tipo devi comprare le schede aggiuntive, su un sito che non sò se si può linkare invece c'è una persona che gestisce 6 servi con arduino senza nessuna scheda aggiuntiva, per esempio. Io nel mio piccolo vorrei gestire 10 servi e 2 matrici led e poi vediamo come me la cavo.

Non ho chissà che urgenze e con calma monterò il tutto, all'inizio i movimenti sul "terreno" li farà tramite TX e RX da aereo... Cavolo non son riuscito a essere più sintetico, Marco.
__________________
son nato dopo l' uovo e la gallina... Garage: non sono le cose a fare il modellista.
ArTex non è collegato   Rispondi citando
Vecchio 16 dicembre 13, 15:10   #8 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Interessante... non posso darti alcuna risposta però mi hai fatto venire in mente che io ho un nunchuk col joystick guasto nel cassetto. Però l'accelerometro probabilmente va...
Ma che vantaggio c'è (a parte la soddisfazione del fai da te) ad usare un nunchuk piuttosto che un accelerometro da pochi euro?

Inviato dal mio HTC Wildfire S A510e con Tapatalk 2
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 16 dicembre 13, 15:54   #9 (permalink)  Top
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.806
Citazione:
Originalmente inviato da Tom_1971 Visualizza messaggio
Ma che vantaggio c'è (a parte la soddisfazione del fai da te) ad usare un nunchuk piuttosto che un accelerometro da pochi euro?

2
Che il nunchuk già lo ho e comprende sia l'accelerometro che il joystick che due tasti, il tutto in una impugnatura già fatta e completa di cavo.... esattamente quello che mi occorre
Aggiungici che tutto intero e già completo costa veramente pochi €....

Carlo
__________________
Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
I miei modelli: http://www.youtube.com/results?search_query=carloroma63
CarloRoma63 non è collegato   Rispondi citando
Vecchio 21 dicembre 13, 10:49   #10 (permalink)  Top
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.806
Citazione:
Originalmente inviato da CarloRoma63 Visualizza messaggio
Che il nunchuk già lo ho e comprende sia l'accelerometro che il joystick che due tasti, il tutto in una impugnatura già fatta e completa di cavo.... esattamente quello che mi occorre
Aggiungici che tutto intero e già completo costa veramente pochi €....

Carlo
Ecco uno sketch che gestisce ben due Nunchuck su un arduino mega 2560. Lo commento nel prossimo post.

Carlo

__________________________________________________ _________________

#include <Servo.h>
#include <SoftI2CMaster.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
Servo myservo; // create servo object to control a servo

const byte sdaPin1 = 3; // digital pin 1 wired to 'd' on BlinkM
const byte sclPin1 = 2; // digital pin 0 wired to 'c' on BlinkM
const byte sdaPin2 = 1; // digital pin 3 wired to 'd' on BlinkM
const byte sclPin2 = 0; // digital pin 2 wired to 'c' on BlinkM
SoftI2CMaster i2c = SoftI2CMaster( sdaPin1,sclPin1 );
SoftI2CMaster i2d = SoftI2CMaster( sdaPin2,sclPin2 );

int val; // variable to read the value from the analog pin
int loop_cnt;
static uint8_t nunchuck_bufa[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufa1[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufa2[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufa3[10]; // array to store nunchuck data,
static uint8_t nunchuck_bufa4[10]; // array to store nunchuck data,
static uint8_t nunchuck_bufa5[10]; // array to store nunchuck data,

static uint8_t nunchuck_bufb[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufb1[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufb2[6]; // array to store nunchuck data,
static uint8_t nunchuck_bufb3[10]; // array to store nunchuck data,
static uint8_t nunchuck_bufb4[10]; // array to store nunchuck data,
static uint8_t nunchuck_bufb5[10]; // array to store nunchuck data,

int joy_x_axisa;
int joy_y_axisa;
int accel_x_axisa;
int accel_y_axisa;
int accel_z_axisa;
int z_buttona;
int c_buttona;

int joy_x_axisb;
int joy_y_axisb;
int accel_x_axisb;
int accel_y_axisb;
int accel_z_axisb;
int z_buttonb;
int c_buttonb;

static void nunchuck_init()
{
i2c.beginTransmission(0x52);// transmit to device 0x52
i2c.send(0x40);// sends memory address
i2c.send(0x00);// sends sent a zero.
i2c.endTransmission();// stop transmitting

i2d.beginTransmission(0x52);// transmit to device 0x52
i2d.send(0x40);// sends memory address
i2d.send(0x00);// sends sent a zero.
i2d.endTransmission();// stop transmitting
}

static void nunchuck_send_request(byte n)
{
if(n==1){
i2c.beginTransmission(0x52);// transmit to device 0x52
i2c.send(0x00);// sends one byte
i2c.endTransmission();// stop transmitting
}else{
i2d.beginTransmission(0x52);// transmit to device 0x52
i2d.send(0x00);// sends one byte
i2d.endTransmission();// stop transmitting
}
}

static int nunchuck_get_data(byte n)
{
if(n==1){

nunchuck_send_request(1); // send request for next data payload
i2c.requestFrom (0x52); // request data from nunchuck
// receive byte as an integer
nunchuck_bufa[0] = i2c.receive();
nunchuck_bufa[1] = i2c.receive();
nunchuck_bufa[2] = i2c.receive();
nunchuck_bufa[3] = i2c.receive();
nunchuck_bufa[4] = i2c.receive();
nunchuck_bufa[5] = i2c.receiveLast();

}else{

nunchuck_send_request(2); // send request for next data payload
i2d.requestFrom (0x52); // request data from nunchuck
// receive byte as an integer
nunchuck_bufb[0] = i2d.receive();
nunchuck_bufb[1] = i2d.receive();
nunchuck_bufb[2] = i2d.receive();
nunchuck_bufb[3] = i2d.receive();
nunchuck_bufb[4] = i2d.receive();
nunchuck_bufb[5] = i2d.receiveLast();
}
}
static void nunchuck_process_data(byte n)
{
static int i=0;

if(n==1){
joy_x_axisa = nunchuck_bufa[0];
joy_y_axisa = nunchuck_bufa[1];
accel_x_axisa = nunchuck_bufa[2]; // * 2 * 2;
accel_y_axisa = nunchuck_bufa[3]; // * 2 * 2;
accel_z_axisa = nunchuck_bufa[4]; // * 2 * 2;

z_buttona = 0;
c_buttona = 0;
// byte nunchuck_bufa[5] contains bits for z and c buttons
switch (nunchuck_bufa[5] & 3) {
case 0:
z_buttona = 1;
c_buttona = 1;
break;
case 1:
z_buttona = 0;
c_buttona = 1;
break;
case 2:
z_buttona = 1;
c_buttona = 0;
break;
case 3:
z_buttona = 0;
c_buttona = 0;
break;
}
// eseguo la media delle ultime 6 o 60 letture, per rendere più stabili i valori

joy_x_axisa=0;
for (i=0;i<5;i++){
nunchuck_bufa1[i]=nunchuck_bufa1[i+1];
joy_x_axisa = joy_x_axisa + nunchuck_bufa1[i+1];
}
nunchuck_bufa1[5]=nunchuck_bufa[0];
joy_x_axisa = (joy_x_axisa + nunchuck_bufa[0])/6;


joy_y_axisa=0;
for (i=0;i<5;i++){
nunchuck_bufa2[i]=nunchuck_bufa2[i+1];
joy_y_axisa = joy_y_axisa + nunchuck_bufa2[i+1];
}
nunchuck_bufa2[5]=nunchuck_bufa[1];
joy_y_axisa = (joy_y_axisa + nunchuck_bufa[1])/6;


accel_x_axisa=0;
for (i=0;i<9;i++){
nunchuck_bufa3[i]=nunchuck_bufa3[i+1];
accel_x_axisa = accel_x_axisa + nunchuck_bufa3[i+1];
}
nunchuck_bufa3[9]=nunchuck_bufa[2];
accel_x_axisa = (accel_x_axisa + nunchuck_bufa[2])/10;


accel_y_axisa=0;
for (i=0;i<9;i++){
nunchuck_bufa4[i]=nunchuck_bufa4[i+1];
accel_y_axisa = accel_y_axisa + nunchuck_bufa4[i+1];
}
nunchuck_bufa4[9]=nunchuck_bufa[3];
accel_y_axisa = (accel_y_axisa + nunchuck_bufa[3])/10;


accel_z_axisa=0;
for (i=0;i<9;i++){
nunchuck_bufa5[i]=nunchuck_bufa5[i+1];
accel_z_axisa = accel_z_axisa + nunchuck_bufa5[i+1];
}
nunchuck_bufa5[9]=nunchuck_bufa[4];
accel_z_axisa = (accel_z_axisa + nunchuck_bufa[4])/10;

}else{

joy_x_axisb = nunchuck_bufb[0];
joy_y_axisb = nunchuck_bufb[1];
accel_x_axisb = nunchuck_bufb[2]; // * 2 * 2;
accel_y_axisb = nunchuck_bufb[3]; // * 2 * 2;
accel_z_axisb = nunchuck_bufb[4]; // * 2 * 2;

z_buttonb = 0;
c_buttonb = 0;

// byte nunchuck_bufa[5] contains bits for z and c buttons
switch (nunchuck_bufb[5] & 3) {
case 0:
z_buttonb = 1;
c_buttonb = 1;
break;
case 1:
z_buttonb = 0;
c_buttonb = 1;
break;
case 2:
z_buttonb = 1;
c_buttonb = 0;
break;
case 3:
z_buttonb = 0;
c_buttonb = 0;
break;
}
// eseguo la media delle ultime 6 o 60 letture, per rendere più stabili i valori

joy_x_axisb=0;
for (i=0;i<5;i++){
nunchuck_bufb1[i]=nunchuck_bufb1[i+1];
joy_x_axisb = joy_x_axisb + nunchuck_bufb1[i+1];
}
nunchuck_bufb1[5]=nunchuck_bufb[0];
joy_x_axisb = (joy_x_axisb + nunchuck_bufb[0])/6;


joy_y_axisb=0;
for (i=0;i<5;i++){
nunchuck_bufb2[i]=nunchuck_bufb2[i+1];
joy_y_axisb = joy_y_axisb + nunchuck_bufb2[i+1];
}
nunchuck_bufb2[5]=nunchuck_bufb[1];
joy_y_axisb = (joy_y_axisb + nunchuck_bufb[1])/6;


accel_x_axisb=0;
for (i=0;i<9;i++){
nunchuck_bufb3[i]=nunchuck_bufb3[i+1];
accel_x_axisb = accel_x_axisb + nunchuck_bufb3[i+1];
}
nunchuck_bufb3[9]=nunchuck_bufb[2];
accel_x_axisb = (accel_x_axisb + nunchuck_bufb[2])/10;


accel_y_axisb=0;
for (i=0;i<9;i++){
nunchuck_bufb4[i]=nunchuck_bufb4[i+1];
accel_y_axisb = accel_y_axisb + nunchuck_bufb4[i+1];
}
nunchuck_bufb4[9]=nunchuck_bufb[3];
accel_y_axisb = (accel_y_axisb + nunchuck_bufb[3])/10;


accel_z_axisb=0;
for (i=0;i<9;i++){
nunchuck_bufb5[i]=nunchuck_bufb5[i+1];
accel_z_axisb = accel_z_axisb + nunchuck_bufb5[i+1];
}
nunchuck_bufb5[9]=nunchuck_bufb[4];
accel_z_axisb = (accel_z_axisb + nunchuck_bufb[4])/10;
}
/* // parte necessaria per sfruttare anche i due bit degli accelerometri presenti nel sesto byte.
if ((nunchuck_bufa[5] >> 2) & 1)
accel_x_axis += 2;
if ((nunchuck_bufa[5] >> 3) & 1)
accel_x_axis += 1;

if ((nunchuck_bufa[5] >> 4) & 1)
accel_y_axis += 2;
if ((nunchuck_bufa[5] >> 5) & 1)
accel_y_axis += 1;

if ((nunchuck_bufa[5] >> 6) & 1)
accel_z_axis += 2;
if ((nunchuck_bufa[5] >> 7) & 1)
accel_z_axis += 1;
*/
}
static void nunchuck_print_data()
{

// sets the servo position according to the scaled value

val = joy_x_axisa ; // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 255, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val);

// mostro sullo schermo LCD i dati ottenuti dal nunchuck

lcd.setCursor(0, 0);
lcd.print(joy_x_axisa);
lcd.print(",");
lcd.print(joy_y_axisa);
lcd.print(" c=");
lcd.print(c_buttona);
lcd.print(" z=");
lcd.print(z_buttona);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(joy_x_axisb);
lcd.print(",");
lcd.print(joy_y_axisb);
lcd.print(" c=");
lcd.print(c_buttonb);
lcd.print(" z=");
lcd.print(z_buttonb);
lcd.print(" ");
delay(1000) ;
lcd.setCursor(0, 0);
lcd.print("x=");
lcd.print(accel_x_axisa);
lcd.print(" y=");
lcd.print(accel_y_axisa);
lcd.print(" z=");
lcd.print(accel_z_axisa);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("x=");
lcd.print(accel_x_axisb);
lcd.print(" y=");
lcd.print(accel_y_axisb);
lcd.print(" z=");
lcd.print(accel_z_axisb);
lcd.print(" ");

delay(1000);

}

void setup() {
nunchuck_init();
lcd.clear();
lcd.begin(16, 2);
myservo.attach(45);
}

void loop() {
if( loop_cnt > 100 ) { // every 100 cicli LOOP legge i dati
loop_cnt = 0;
nunchuck_get_data(1);
nunchuck_process_data(1);
nunchuck_get_data(2);
nunchuck_process_data(2);
nunchuck_print_data();
}
loop_cnt++;
}
__________________
Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
I miei modelli: http://www.youtube.com/results?search_query=carloroma63
CarloRoma63 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Messaggio
Coassiale mixed controller con arduino catman Circuiti Elettronici 12 01 aprile 11 23:17
quadricottero con arduino 2009 sailormann26 Aeromodellismo Progettazione e Costruzione 0 27 dicembre 10 23:12



Tutti gli orari sono GMT +2. Adesso sono le 06:15.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2026
www.baronerosso.it - www.toymagazine.it