Show Posts
Pages: [1] 2 3
1  Using Arduino / Programming Questions / Re: Rfid to keyboard on: March 23, 2014, 04:08:18 am
No it gives the error
iso c++ forbids comparaison between pointer and integer
2  Using Arduino / Programming Questions / Rfid to keyboard on: March 22, 2014, 02:21:13 pm
Hi all.
I need to get mifare uid to keyboard using Arduini Micro.
I use the rc522 library and I get a good response using Serial.print.
The problem is that I m not able to send data to keyboard emulating it.
This is the code
<code>
  /*
 * MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT.
 * The library file MFRC522.h has a wealth of useful info. Please read it.
 * The functions are documented in MFRC522.cpp.
 *
 * Based on code Dr.Leong   ( WWW.B2CQSHOP.COM )
 * Created by Miguel Balboa (circuitito.com), Jan, 2012.
 * Rewritten by Søren Thing Andersen (access.thing.dk), fall of 2013 (Translation to English, refactored, comments, anti collision, cascade levels.)
 * Released into the public domain.
 *
 * Sample program showing how to read data from a PICC using a MFRC522 reader on the Arduino SPI interface.
 *----------------------------------------------------------------------------- empty_skull
 * Aggiunti pin per arduino Mega
 * add pin configuration for arduino mega
 * http://mac86project.altervista.org/
 ----------------------------------------------------------------------------- Nicola Coppola
 * Pin layout should be as follows:
 * Signal     Pin              Pin               Pin
 *            Arduino Uno      Arduino Mega      MFRC522 board
 * ------------------------------------------------------------
 * Reset      9                5                 RST
 * SPI SS     10               53                SDA
 * SPI MOSI   11               52                MOSI
 * SPI MISO   12               51                MISO
 * SPI SCK    13               50                SCK
 *
 * The reader can be found on eBay for around 5 dollars. Search for "mf-rc522" on ebay.com.
 */

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup() {
   Serial.begin(115200);   // Initialize serial communications with the PC
   SPI.begin();         // Init SPI bus
   mfrc522.PCD_Init();   // Init MFRC522 card
   Keyboard.begin();
}

void loop() {
   // Look for new cards
   if ( ! mfrc522.PICC_IsNewCardPresent()) {
      return;
   }

   // Select one of the cards
   if ( ! mfrc522.PICC_ReadCardSerial()) {
 
      return;
}
 for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
    Keyboard.print((mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
    Serial.print(mfrc522.uid.uidByte, HEX);
    Keyboard.print((mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
   
}
Serial.println();
   

}                      
</code>

On pc text i get only spaces. I think its a casting problem, that s true? How can I solve that?
Thanks

3  Using Arduino / Programming Questions / Re: PWM basics for H Bridge on: September 28, 2013, 04:18:26 am
And here for 4.933khz output..

void setup(){
 
 TCCR1A |= B00110000 ;
  TCCR1B = TCCR1B & 0b11111000 |2;
}

void loop(){
  analogWrite(9,120);
  analogWrite(10,127);
 
}


What to do to reach about 15/19 khz?
4  Using Arduino / Programming Questions / Re: PWM basics for H Bridge on: September 28, 2013, 04:12:47 am
MMMM
Can be?



void setup(){
 
 TCCR1A |= B00110000;
}

void loop(){
  analogWrite(9,120);
  analogWrite(10,127);
 
}

5  Using Arduino / Programming Questions / Re: PWM basics for H Bridge on: September 28, 2013, 03:48:26 am
How about deat time between phases?
6  Using Arduino / Programming Questions / PWM basics for H Bridge on: September 28, 2013, 03:17:20 am
Hi.
I'm trying to make a code for arduino leonardo to have pwm from pin 9 and 10. this pwm must drive a full igbt bridge. So I need a square signal wich has equal period time for all pins but the wave must be inverted and with some dead time to prevent short circuit. I try but the oscilloscope gave me a signal with inverted phase but not equal time for on and off...Can someone help me?
I m not so proud..
7  International / Generale / Re: Controllare H bridge on: September 23, 2013, 02:29:21 pm
Ciao
Purtroppo non sono cosi ferrato per muovermi liberamente. Ho visto soluzioni su internet che utlizzano un solo integrato e qualche resistenza per fare muovere un ponte full bridge IGBT. Purtroppo dubito di trovare detti componenti e di saperli implementare.
Al che mi sono ricordato della scheda arduino Leonardo e speravo di poterla utilizzare.
Ho buttato giu questo codice


void setup()
{
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}
void loop()
{
 digitalWrite(10, 0);
 delayMicroseconds(15);// Approximately 10% duty cycle @ 1KHz
  digitalWrite(9, 254);
  digitalWrite(9, 0);
  delayMicroseconds(15);// Approximately 10% duty cycle @ 1KHz
   digitalWrite(10, 254);
}

che mi genera piu o meno quel che mi serve ad una frequenza di circa 17.99KHZ testato con l'oscilloscopio.
La cosa piu irritante (ma sarà naturale per qualcuno piu pratico) è che le fasi a 0 graficamente sono molto piu lunghe di quelle a 254. cosi dovrei essere sicuramente sicuro che il ponte non si brucia ma forse non rende bene come dovrebbe. Il mio scopo e generare un campo abbastanza forte da causare induzione elettromagnetica su materiali ferrosi
Purtroppo non posso inserirvi lo screen dell'oscilloscopio..smiley-sad

Probabilmente dovrei usare le liberie Timer1 e i registri, ma per quanto legga, non capisco un H
8  International / Generale / Controllare H bridge on: September 19, 2013, 11:51:01 am
Ciao a tutti.
Sto realizzando un progettino per un riscaldatore ad induzione.
Devo pilotare un ponte H attraverso arduino. Non riesco  a capire come è possibile gestire attraverso il codice due pin PWM in modo tale che siano l'uno l'inverso dell'altro (01010101 e 10101010) e sopratutto come fare in modo che fra una fase e l'altra ci sia una piccolo periodo in cui entrambi i pin siano a 0. questo per evitare che vada in corto l'intero ponte a causa del ritardo di spegnimento dei mosfet.
Potete darmi qualche dritta pratica?
Grazie
9  International / Software / Re: Analisi progetto pwm on: April 25, 2013, 05:58:47 am
Arduino Leonardo
10  International / Software / Re: Analisi progetto pwm on: April 25, 2013, 05:09:09 am
Ti ringrazio molto
Grazie a te un problema l'ho risolto

ho modificato cosi
Code:
#include <SoftwareSerial.h>
#define inputPin 0 //Potenziometro potenza
#define inputPin 1 //Potenziometro millisec
SoftwareSerial mySerial(3,2); //Imposto come seriale TX il pin 2 per lcd
char riga1[]="Potenza     ";
char riga2[]="Frequenza ";
const short pwm=13;
const short sensorepwm=0;
const short sensorefreq=1;
long previousMillis = 0;
long interval = 1000;

void setup()
{
     Serial.begin(9600);
      mySerial.begin(9600);
     delay(500);
    
 mySerial.write(19);
 mySerial.write(1);
 mySerial.write("               ");
 mySerial.write("                ");
 mySerial.write(6);
 delay(1000);
 mySerial.write("  GESTIONE PWM  ");
 delay(1000);
 

 mySerial.write(3);
  mySerial.write(16);
  delay(1000);
 mySerial.write("    TEST UNO    ");
  delay(1000);
  mySerial.write(3);
  mySerial.write(16);
  mySerial.write("                ");
 mySerial.write(3);
 mySerial.write(1);
  mySerial.write("                ");
  mySerial.write(3);
  mySerial.write(1);
 mySerial.write(" ..Attivazione..");
 delay(1500);
 mySerial.write(3);
  mySerial.write(16);
  mySerial.write("                ");
 mySerial.write(3);
 mySerial.write(1);
  mySerial.write("                ");
  mySerial.write(1);
    mySerial.write(4);
  pinMode(pwm, OUTPUT);
}
void loop()
{
int valorepot=analogRead(sensorepwm);
int valorefreq=analogRead(sensorefreq);
int valorepotmap=map(valorepot,0,1023,0,100);
int valorepotwr=map(valorepot,0,1023,0,255);
interval=map(valorefreq,0,1023,0,2000);

delay(200);
  mySerial.write(1);
  mySerial.print(riga1);
  //mySerial.print(riga2);
 word pot =word(valorepotmap);
 mySerial.print(pot);
 mySerial.print("%");
 mySerial.write(riga2);
 word freq =word(interval);
 word interv = word(interval);
 mySerial.write(interv);
 mySerial.print("Ms");
 Serial.write(interv);
 if (millis() - previousMillis > interval) {
    previousMillis = millis();
    analogWrite(pwm,valorepotwr);
    Serial.write(valorepotwr);
}
}
Il problema permane sul tempo visualizzato. Anche con monitor seriale "interval" non sembra una variabile visualizzabile. Mi starò perdendo con il casting delle variabili. Come mai? Eppure  il led (anche se utilizzato impropriamente) sembra rispondere. Nel senso che al massimo del giro del secondo potenziometro tra un aggiornamento e l'altro sembrano passare circa 2 sec....e al minimo l'aggiornamento è immediato...
11  International / Software / Analisi progetto pwm on: April 24, 2013, 12:42:15 pm
Ciao
Sto realizzando un progettino per la produzione di ossidrogeno e vorrei utilizzare arduino per dare corrente in pwm. L'elettronica di potenza attraverso mosfet è funzionante ma ho qualche problema con il codice

inserisco

Code:
#include <SoftwareSerial.h>
#define inputPin 0 //Potenziometro potenza
#define inputPin 1 //Potenziometro millisec
SoftwareSerial mySerial(3,2); //Imposto come seriale TX il pin 2 per lcd
char riga1[]="Potenza     ";
char riga2[]="Frequenza ";
const short pwm=13;
const short sensorepwm=0;
const short sensorefreq=1;
long previousMillis = 0;
long interval = 1000;

void setup()
{
     Serial.begin(9600);
      mySerial.begin(9600);
     delay(500);
    
 mySerial.write(19);
 mySerial.write(1);
 mySerial.write("               ");
 mySerial.write("                ");
 mySerial.write(6);
 delay(1000);
 mySerial.write("  GESTIONE PWM  ");
 delay(1000);
 

 mySerial.write(3);
  mySerial.write(16);
  delay(1000);
 mySerial.write("    TEST UNO    ");
  delay(1000);
  mySerial.write(3);
  mySerial.write(16);
  mySerial.write("                ");
 mySerial.write(3);
 mySerial.write(1);
  mySerial.write("                ");
  mySerial.write(3);
  mySerial.write(1);
 mySerial.write(" ..Attivazione..");
 delay(1500);
 mySerial.write(3);
  mySerial.write(16);
  mySerial.write("                ");
 mySerial.write(3);
 mySerial.write(1);
  mySerial.write("                ");
  mySerial.write(1);
    mySerial.write(4);
  pinMode(pwm, OUTPUT);
}
void loop()
{
byte valorepot=map(analogRead(sensorepwm),0,1023,0,100);
byte valorefreq=map(analogRead(sensorefreq),0,1023,0,100);
interval=valorefreq;
Serial.println(valorepot);
delay(200);
  mySerial.write(1);
  mySerial.print(riga1);
  //mySerial.print(riga2);
 word pot =word(valorepot);
 mySerial.print(pot);
 mySerial.print("%");
 mySerial.write(riga2);
 word freq =word(valorepot);
 mySerial.print(valorefreq);
 mySerial.print("Ms");
 if (millis() - previousMillis > interval) {
    previousMillis = millis();
    analogWrite(pwm,analogRead(sensorepwm));
}
}

Magari è rozzo ma non sono un virtuoso. Noto uno strano comportamento...i valori dei potenziometri non sono quelli che mi aspetto. Non sono flottanti bensi hanno un comportamento tipo denti di sega..invece di assumere un andamento da maggiore a minore e viceversa la rotazione dei potenziometri assume 4 andamenti per giro completo..
Non so se sono stato chiaro.
Accetto consigli e suggerimenti.
12  International / Software / Re: PWM on: February 01, 2013, 11:37:01 am
No per il mio utilizzo serve proprio questo tipo di funzione...Onestamente devo studiare ancora molto per capire che frequenze sto generando..Sto lavorando molto empiricamente ...
13  International / Software / Re: PWM on: January 31, 2013, 03:56:33 pm
attaccando i mosfet ad un uscita 5 volt 20A di un atx ruotando i trimmer si sente un fischio di frequenza variare muovendo il trimmer frequenza...Su una lampada ad incandescenza pero non si vede risultato...Era piu potente con il solo controllo duty cycle naturalmente...
14  International / Software / Re: PWM on: January 30, 2013, 03:46:26 pm
Ho fatto cosi
Code:
//pwm.ino
#include <TimerOne.h>
const short pwmp=9;
const short sensore=0;
const short sensore1=1;
void pwm(char pin, int duty, long microseconds=-1);
void setup() {
pinMode(pwmp, OUTPUT);
Timer1.initialize();
Timer1.start();
}
void loop() {
 
//Variabile che contiene il valore proporzionato letto dal sensore analogico
byte valore=map(analogRead(sensore),0,1023,0,255);
        byte valore1=map(analogRead(sensore1),0,1023,0,255);
//Il valore viene attuato sul piedino PWM
        Timer1.pwm(pwmp,valore,valore1);
        //analogWrite(pwm,valore);
//Piccola pausa
delay(1);
}

ma sempre ad occhio..sembra funzionare ma non so se migliora qualcosa in rendimento
15  International / Software / Re: PWM on: January 29, 2013, 01:09:26 pm
Perchè con il 555 posso solo variare il duty cycle e non potrò mai implementare uno schermino seriale lcd con frequenza e duty cycle smiley
Pages: [1] 2 3