Bonjour à tous !
J'ai besoin de vous une fois de plus ! :/
En effet, j'aimerais bien faire un test tout basique à l'aide de mon PIC18F4431 et d'un simple potentiomètre.
Ce que je veux faire, c'est utiliser le Port AN0 pour lire la valeur du potentiomètre, de stocker cette valeur dans une variable, et d'ensuite, afficher cette variable sur un LCD.
Et bien sûr, on verrais la valeur changer en temps réel lorsque l'on tourne le potentiomètre.
J'ai déjà épluché quelque doc par rapport à ça, j'ai même essayé de regarder des programmes d'exemples, voir comment setup le bordel.
J'ai essayé un petit bout de code, mais il ne se passe rien niveau Affi, par contre pas d'erreurs à la compilation.
Je vais vous mettre le bout de code ci-dessous, et peut être que à partir de ça vous pourrez m'aiguiller !
Je vous remercie encore grandement à l'avance de votre considération.Code:void main(){ LCD lcd = { &PORTC, 2, 3, 4, 5, 6, 7 }; // PORT, RS, EN, D4, D5, D6, D7 | Attribution des pins LCD LCD_Init(lcd); unsigned short result; TRISA0 = 1; // Set RA0 as input /* PCFG3:PCFG0 (ADCON1 bit 3-0) = 1110 -> AN0 only will analog and other 12 channels will digital VCFG0=0,VCFG1=0 -> Vref+ = VDD and Vref- = VSS */ ADCON1 = 0b00001110; /* CHS3:CHS0 (ADCON0 bit 5-2) = 0000 -> Channel 0 */ ADCON0 = 0b00000000; /* 16Tosc conversion clock, 6Tad acquisition time, ADC Result Right Justified */ ADCON2 = 0b10011101; ADCON0 = ADCON0 | 1; // ADCON0.ADON = 1 __delay_us(5); // acquisition delay of 4.6 us ADCON0 = ADCON0 | 10; // ADCON0.GODONE = 1 while (ADCON0||10);0 // wait till GODONE bit is zero result = ADRES; // Read converted result, ADRESH:ADRESL -> 16 bit register sprintf(s, "POT= %u", result); LCD_Set_Cursor(1,1); LCD_putrs(s); // process the result }
Bien à vous, Tom.
(P.S : N'oubliez pas que je ne suis encore qu'un débutant )
-----