Page 1 sur 1
utilisation de pi4j
Posté : ven. 18 déc. 2015 23:32
par danaos
Bonjour,
quelqu'un utilise il pi4j car j'essaye de moduler un signal pwm et j'ai un tats d'erreur de compilation ??
voici mon test :
public static GpioController gGPIOController = GpioFactory.getInstance();
GpioPinPwmOutput pin; la ok
pin = gGPIOController.provisionPwmOutputPin(getPin(nGPIO)); la ok
utilisation de pin.pwmSetMode et pin.setPwm pas ok ??
voilà l'erreur :
error: cannot find symbol pin.pwmSetMode(2);
symbol: method pwmSetMode(int)
location: variable pin of type GpioPinPwmOutput
quelqu'un peut il m'aider
Re: utilisation de pi4j
Posté : lun. 4 janv. 2016 09:52
par vague nerd
Bonjour.
Vous pouvez donner la portion de code complète, et la sortie d'erreur complète correspondante ?
Je galère pour comprendre...
Cdt.
Re: utilisation de pi4j
Posté : mar. 12 janv. 2016 19:38
par danaos
Bonjour,
tout d'abord merci pour votre réponse je me sens moins seul.
en gros j'essaye de fournir un signal pwm pour contrôler un servo avec pi4j et a mon avis je n'utilise pas la bonne syntaxe.
en python j'y arrive.
un petit exemple serais le bienvenu.
d'avance merci
Re: utilisation de pi4j
Posté : ven. 15 janv. 2016 17:46
par danaos
voici l'erreur que j'obtiens lors de la création de l'archive java :
Code : Tout sélectionner
java:242: error: cannot find symbol
pin.pwmSetRange();
^
symbol: method pwmSetRange(int)
location: variable pin of type GpioPinPwmOutput
1 error
a mon avis il me manque une librairie ou quelque chose du genre, j'utilise la librairie pi4j-core.jar
peut etre que les fonction pwmSetMode, pwmSetRange ne sont pas define
la portion de code c'est un test qui fait quelques lignes que je ne garantis pas
Code : Tout sélectionner
public static boolean GPIOPwm(int nGPIO,int cycle){
GpioPinPwmOutput pin;
int DC=50;
try{
pin = gGPIOController.provisionPwmOutputPin(getPin(nGPIO));
if(pin != null){
pin.setPwm(DC); //en python GPIO.PWM(port, freq)
pin.pwmSetRange(cycle)n python pwm.ChangeDutyCycle()
gGPIOController.unprovisionPin(pin);
return true;
}
else{
return false;
}
}
voilà en gros la question c'est comment faire l'équivalent en java de ce code python et quelle librairie utiliser ?
Code : Tout sélectionner
GPIO.setup(port,GPIO.OUT)
pwm=GPIO.PWM(port,frequence) //Ex: 11,50
pwm.start()
pwm.ChangeDutyCycle()
pwm.stop()
je ne sais pas comment mieux décrire ma situation, help
Re: utilisation de pi4j
Posté : ven. 15 janv. 2016 23:13
par vague nerd
Bonjour.
Pour ma part, j'ai eu besoin des librairies suivantes.
- pi4j-core.jar
pi4j-device.jar
pi4j-gpio-extension.jar
pi4j-service.jar
Concernant votre message d'erreur, il dit plutôt que la classe GpioPinPwmOutput n'a pas de méthode pwmSetRange().
Voulliez-vous taper setPwm() ?
pin.pwmSetRange(cycle)n python pwm.ChangeDutyCycle()
Cette ligne semble la contraction de deux lignes... un copier/coller raté ?
D'après ce que me dit google, il ne faut pas faire du PWM pour bouger une servo, mais du PPM.
Le PPM à une durée de cycle de 20 ms, et c'est la taille de l'état haut qui définit l'angle du servo...
Ok je suis pas clair. Pour mettre le servo au mini, il faut envoyer :
Pour center le servo ;
Pour mettre le servo au max :
Cdt.
PS : je me suis permis d'éditer votre post pour plus de facilité de lecture.
Re: utilisation de pi4j
Posté : ven. 15 janv. 2016 23:19
par danaos
merci pour cette réponse je vais tester de nouveau
Re: utilisation de pi4j
Posté : ven. 15 janv. 2016 23:25
par danaos
concernant pwmSetRange().
quel est l'équivalent du ChangeDutyCycle de python en pi4j il faut donner une fréquence de base j'imagine que c'est setPwm()comme par exemple 50hz. et une longueur de pulse comme par exemple 10% ou 1 ms. et là je cale.
Re: utilisation de pi4j
Posté : ven. 15 janv. 2016 23:40
par vague nerd
Pour que le pwm soit du ppm, il faut effectivement fixer la longueur de cycle.
Par contre, je pense que c'est setPwm() qui doit fixer la longueur du HIGH (j'imagine...)
Mais avez vous essayé de ne faire que setPwm() ? La taille de cycle par défaut est peut-etre la bonne !
J'arrive pas à trouver d'exemple... c'est agaçant !
Cdt.