Wikipedia

Résultats de recherche

samedi 17 octobre 2015

Keypad PIC18F4550

Dans ce tutoriel, nous allons vous montrer comment interfacer 4x4 Clavier avec PIC18F4550 micro-contrôleur, dans ce tutoriel, je vais juste vous montrer le schéma de base de circuit et le code




Dans la programmation du clavier interfaçage nous avons deux méthodes: -
  • Détection de Appuyez sur la touche
  • Clé d'identification
Il ya deux façons par lesquelles PIC18F peut effectuer la détection de pression de touche: -
  • Interruption Méthode et
  • Méthode de numérisation (cette méthode est utilisée dans AT89C51 exemple)
Dans PIC18F, la fonctionnalité PORTB-Change interruption peut être utilisée pour détecter la pression sur une touche à l'aide d'interruption Méthode et je personnellement des conseils de l'utiliser, car il est spécialement prévue par Mirochip pour ces interfaces et est beaucoup plus efficace que la numérisation de méthode.

Pour plus d'informations contactez-nous au mohamed.amri102@gmail.com

samedi 10 octobre 2015

RFID Système automatisé de paiement

Système de paiement automatisé VB

RFID Système automatisé de paiement est un projet qui calcule le prix total des marchandises qui ont été dans l'étiquette RFID de patch. Il est la même fonction que le projet RFID intelligente caissier, il suffit d'utiliser un RFID UHF différent. Il utilise SkyeModule M10 Module UHF

Projet Android: Switch Bluetooth

Commutateur Bluetooth

Switch Bluetooth est un projet visant à activer ou désactiver le relais du smartphone Android via Bluetooth.

Passer Schéma Bluetooth


dimanche 6 septembre 2015

Multiplexage - afficheurs sept segments


Code:
///////////////////////////////////////////////////////////////////////////////////////////////////
 unsigned short i;
 INTCON = 0; // Disable GIE , PEIE , INTE , RBIE , TOIE
 TRISA = 0;
 PORTA = 0;
 TRISD = 0;
 PORTD = 0;
 while (1) {
 for (i = 0; i <= 9u; i++)
 {
   PORTA = 0; // Turn off all 7seg displays
   PORTD = mask(i); // bring appropriate value to PORTD
   PORTA = 1; // turn on appropriate 7seg. display
   Delay_ms (1000);
  }
 }
 }
 unsigned short mask( unsigned short num)
{
 switch (num) {
 case 0 : return 0x3F;
 case 1 : return 0x06;
 case 2 : return 0x5B;
 case 3 : return 0x4F;
 case 4 : return 0x66;
 case 5 : return 0x6D;
 case 6 : return 0x7D;
 case 7 : return 0x07;
 case 8 : return 0x7F;
 case 9 : return 0x6F;
 }
 }

Arduino et Bluetooth HC06

Plusieurs types de modules Bluetooth sont disponibles avec en particulier le HC05 et le HC06.
>> Le HC-05 dispose d'un firmware complet avec beaucoup de commandes AT disponibles, il peut être configuré soit comme maitre, soit comme esclave.
>> Le HC-06 ne peut être configuré que comme esclave et dispose d'un nombre de commandes AT limité.
Pour les exemples de réalisation Bluetooth, nous utiliserons le composant HC-06.



Arduino BT montage

Une fois l'Arduino programmé, on peut réaliser le montage ci-dessous avec le cablage à réaliser entre le module HC06 et l'Arduino suivant :
Module HC06 (4 pattes utilisées) -> Arduino
VCC –> +5V
GND –> GND
TXD –> Patte 0 (RX)
RXD –> Patte 1 (TX)

Code Arduino

int compteur = 0;    // Compteur de messages envoyes
     unsigned long temps; // Mesure temps ecoule
     
    void setup() {
        Serial.begin(9600);    //Demarrage liaison serie
        pinMode(13, OUTPUT);   //La LED 13 est utilisee comme temoin de bon fonctionnement
    }
     
    void loop() {
        digitalWrite(13, HIGH);   // Allumage de la LED 13
        delay(200);               // Temporisation de 200 ms 
        digitalWrite(13, LOW);    // Extinction de la LED 13
        ++compteur                // Incrementation compteur de message
        temps = millis();
        // Envoi message via Bluetooth
        Serial.print("PHMARDUINO - Test du module Bluetooth HC06 - "); 
        Serial.print("Compteur de messages : "); Serial.print(compteur);
        Serial.print(" - Temps en ms : "); Serial.println(temps);      
        delay(1000);  //Delai d une seconde
    }

Mesure de température par arduino et LM35

Ce montage permet par exemple de mesurer en continu très simplement la température à l'intérieur d'une pièce. Les résultats sont transmis par l'Arduino au PC via l'interface série puis affichés dans la console Arduino. 

LM35

Le capteur retenu pour ce montage permettant la mesure de température est le LM35 DZ car il est très simple à mettre en oeuvre, il est étalonné directement en usine et ne coûte pas très cher.
Il permet de faire des mesures de températures assez précises (+/- 0.5 degré) de 0 à 100 degrés.
Il fournit une tension proportionnelle à la température mesurée. Celle-ci augmente de 10 mV par degré : Il fournit 0 V pour 0 degré, 250 mV pour 25 degrés, etc. et un maximum de 1 volt pour 100 degrés. 


LM35

Code Arduino :

/Déclaration et initialisation des variables
  float mesure=0;        //Variable pour le stockage mesure retournée par le capteur
  float tension=0;       //Variable pour le stockage de la tension 
  float temperature=0;   //Variable pour le stockage de la température 
  float tempmin=100;     //Temperature min
  float tempmax=0;       //Temperature max
  int portana0 = 0;      //Numéro du port analogique sur lequel la température est mesurée

//Traitements initialisation
  void setup()
  {
    analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
    Serial.begin(9600);        //initialisation de la liaison série à 9 600 bauds
  }

//Traitements itératifs
  void loop()
  {
    mesure = analogRead(portana0);  
    tension = mesure * 1.1 / 1024;  //Conversion en tension (en volt)
    
    temperature = tension * 100;    //Conversion en température (en degré Celsius)
    if (temperature < tempmin) {tempmin = temperature;} //Calcul temperature mini
    if (temperature > tempmax) {tempmax = temperature;} //Calcul temperature maxi

    Serial.print("Tension : "); Serial.print (tension); Serial.print(" Volts - ");         
    Serial.print("Temperatures :"); 
    Serial.print(" >Actuelle : "); Serial.print (temperature); 
    Serial.print(" >Mini : "); Serial.print (tempmin); 
    Serial.print (" >Max : "); Serial.println (tempmax);
    //Attente de 5 secondes avant de faire une nouvelle mesure
    delay(5000);                    
  }


LM35 Console

PWM pic 16F887



Code:
unsigned short current_duty, old_duty, current_duty1, old_duty1;

void InitMain() {
  ANSEL  = 0;                         // Configure AN pins as digital
  ANSELH = 0;
  C1ON_bit = 0;                       // Disable comparators
  C2ON_bit = 0;
  
  PORTA = 255;
  TRISA = 255;                        // configure PORTA pins as input
  PORTB = 0;                          // set PORTB to 0
  TRISB = 0;                          // designate PORTB pins as output
  PORTC = 0;                          // set PORTC to 0
  TRISC = 0;                          // designate PORTC pins as output
  PWM1_Init(5000);                    // Initialize PWM1 module at 5KHz
  PWM2_Init(5000);                    // Initialize PWM2 module at 5KHz
}

void main() {
  InitMain();
  current_duty  = 16;                 // initial value for current_duty
  current_duty1 = 16;                 // initial value for current_duty1

  PWM1_Start();                       // start PWM1
  PWM2_Start();                       // start PWM2
  PWM1_Set_Duty(current_duty);        // Set current duty for PWM1
  PWM2_Set_Duty(current_duty1);       // Set current duty for PWM2

  while (1) {                         // endless loop
    if (RA0_bit) {                    // button on RA0 pressed
      Delay_ms(40);
      current_duty++;                 // increment current_duty
      PWM1_Set_Duty(current_duty);
     }

    if (RA1_bit) {                    // button on RA1 pressed
      Delay_ms(40);
      current_duty--;                 // decrement current_duty
      PWM1_Set_Duty(current_duty);
     }

    if (RA2_bit) {                    // button on RA2 pressed
      Delay_ms(40);
      current_duty1++;                // increment current_duty1
      PWM2_Set_Duty(current_duty1);
     }

    if (RA3_bit) {                    // button on RA3 pressed
      Delay_ms(40);
      current_duty1--;                // decrement current_duty1
      PWM2_Set_Duty(current_duty1);
     }

    Delay_ms(5);                      // slow down change pace a little
  }
}