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 :
Image
Pour center le servo ;
Image
Pour mettre le servo au max :
Image
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.