Bonjour
D'après vous est-ce que ce capteur peut-être utiliser en SIP & PUFF ?
Merci
Bonjour
SIP & PUFF , c'est qui ou quoi ?
Aspirer ou souffler
c'est plus clair comme ça ! SIP & PUFF me faisaient plutôt penser à des personnages de BD
tu cherches donc un capteur de pression capable d'indiquer une différence par rapport à la pression atmosphérique, il me semble que le modèle indiqué ne permet pas ça... mais je ne suis par au top sur les capteurs de pression......
Spontanément j'aurai tendance à chercher pour cet usage un capteur de pression différentiel assez sensible, genre MPX5010
Attendons confirmation ou infirmation .......
Oui, il faut que j'arrive à faire quelque chose qui lorsque j'aspire me fasses un clic droit de la souris et quand je souffle fasse un clic gauche. J'ai bien des contacteurs à souffler mais je pense qu'ils sont déjà d'une trop gros et difficile à adapter à Arduino. Ce que je voudrais c'est quelque chose de simple à mettre sur la plaque arduino.
pour avoir suivi tes autres fils de discussion je connaissais le contexte
Mieux vaut rester dans le même fil de discussion si les questions sont relatives à un projet unique, ça permet de mieux cibler les réponses.
dsisperser les questions ralentit les choses puisque ça oblige les aidants à poser des questions pour comprendre les enjeux
ok desolé supprime mon message si tu veux et je passe à la suite de mon dernier topic
je vais réviser le procédé pour fusionner deux fils de discussion
je viens de trouver un MPXV5010DP dans un tiroir
je vais le câbler et voir si les tensions obtenues en soufflant et aspirant sont exploitables
Le composant est décrit ici et disponible :
(sortie analogique, dimensions presque un cube d'arête 10mm)
ah super
Non, pas super
en lisant la doc avant de tester je réalise que cette référence ne convient pas
P1 doit toujours être supérieur à P2
Notre spécialiste en capteurs de pression, @artouste n'est plus là pour nous indiquer la référence qui convient et permettrait d'éviter l'acquisition d'un contacteur souffle/aspiration dans une boutique spécialisée 'autonomie'
Bonjour
Bon je crois que j'ai trouvé mon bonheur. Non seulement par rapport à mon premier sujet il y a quelques jours mais également par rapport à ce topic.
Regardez cet article, il combine exactement le système que je veux. Seulement dans le descriptif du matériel,les liens ne fonctionne plus. Du coup j'ai fait des recherches sur d'autres sites. Pouvez-vous me dire si le contacteur à souffle MPXV7002DP conviendrait pour du SIP & PUFF ?
Pouvez-vous me dire également si ce serait adaptable sur ma carte Leonardo plutôt que la Pro micro indiqué dans l'article ?
merci
Si j’arrive à réaliser ce projet je vous explique pas l'économie que je ferai. Vous n'avez qu'à regarder le tarif commercial ici
Bonjour @foufouner
Bonne pioche !!
Oui ,le capteur de pression MPXV7002DP convient à une mesure de pression/dépression donc "souffler/aspirer" (j'ai une préférence marquée pour ma langue maternelle qui est loin d'être pauvre en vocabulaire!)
la tension en sortie vaut environ 2,5V en l'absence de différenece de pression entre P1 et P2(les deux orifies) , elle évolue ensuite en fonction du signe et de l'intensité de la différence de pression.
je ne vois pas de raison pour que ça ne fontionne pas avec Leonardo aussi bien que Pro Micro
la notice technique de ce capteur et la réalisation mentionnée paraissent encourageantes
....ceci dit il est délicat de conseiller formellement une solution que l'on a pas expérimenté soi-même
ah cool
Je vais le commander alors
Par contre j'ai une question, quelle est la différence entre ce MPXV7002DP et celui-ci ?
Désolé pour mes questions bêtes
-le premier lien montre un composant MPXV7002DP nu, composant conçu et fabriqué initialement par Motorola, maintenant sous la banière de NXP
-le second lien montre un module CJMCU-36 supportant un MPXV7002DP afin de faciliter son utilisation sans avoir à souder le boitier CMS du capteur
On rencontre souvent le terme 'breakout' pour désigner ce genre de petit circuit imprimé
le prix ici proposé sur eBay est étonnant , les CJMCU-36 semblent être proposés dans les 60€ sur Aliexpress
si le capteur de pression est authentique, pas récupérré au rebut, si le vendeur accepte de l'expédier en France, si le coût du port ne vient pas casser l'effet..... c'est une bonne affaire !
NXP , fabricant du capteur, vend les MPXV7002 15€ HT pour 500 pièces, 25€ HT à l'unité
l'offre sur eBay correspond peut être à une liquidation de stock
Bonjour
Ca y est, je viens de réaliser mon premier projet Arduino
Je suis donc parti sur quelque chose de très simple, la création d'un mini joystick pour diriger le souris de l'ordinateur. Je suis donc parti sur ce prototype.
La souris arrive à monter,descendre, aller à gauche, àdroite mais lorsque j'appuie au centre du joystick, le clic ne fonctionne pas !
Voici mon code
/*
JoystickMouseControl
Controls the mouse from a joystick on an Arduino Leonardo, Micro or Due.
Uses a pushbutton to turn on and off mouse control, and a second pushbutton
to click the left mouse button.
Hardware:
- 2-axis joystick connected to pins A0 and A1
- pushbuttons connected to pin D2 and D3
The mouse movement is always relative. This sketch reads two analog inputs
that range from 0 to 1023 (or less on either end) and translates them into
ranges of -6 to 6.
The sketch assumes that the joystick resting values are around the middle of
the range, but that they vary within a threshold.
WARNING: When you use the Mouse.move() command, the Arduino takes over your
mouse! Make sure you have control before you use the command. This sketch
includes a pushbutton to toggle the mouse control state, so you can turn on
and off mouse control.
created 15 Sep 2011
updated 28 Mar 2012
by Tom Igoe
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/JoystickMouseControl
*/
#include "Mouse.h"
// set pin numbers for switch, joystick axes, and LED:
const int switchPin = 2; // switch to turn on and off mouse control
const int mouseButton = 3; // input pin for the mouse pushButton
const int xAxis = A0; // joystick X axis
const int yAxis = A1; // joystick Y axis
const int ledPin = 5; // Mouse control LED
// parameters for reading the joystick:
int range = 12; // output range of X or Y movement
int responseDelay = 5; // response delay of the mouse, in ms
int threshold = range / 4; // resting threshold
int center = range / 2; // resting position value
bool mouseIsActive = false; // whether or not to control the mouse
int lastSwitchState = LOW; // previous switch state
void setup() {
pinMode(switchPin, INPUT); // the switch pin
pinMode(ledPin, OUTPUT); // the LED pin
// take control of the mouse:
Mouse.begin();
}
void loop() {
// read the switch:
int switchState = digitalRead(switchPin);
// if it's changed and it's high, toggle the mouse state:
if (switchState != lastSwitchState) {
if (switchState == HIGH) {
mouseIsActive = !mouseIsActive;
// turn on LED to indicate mouse state:
digitalWrite(ledPin, mouseIsActive);
}
}
// save switch state for next comparison:
lastSwitchState = switchState;
// read and scale the two axes:
int xReading = readAxis(A0);
int yReading = readAxis(A1);
// if the mouse control state is active, move the mouse:
if (mouseIsActive) {
Mouse.move(xReading, yReading, 0);
}
// read the mouse button and click or not click:
// if the mouse button is pressed:
if (digitalRead(mouseButton) == HIGH) {
// if the mouse is not pressed, press it:
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
}
// else the mouse button is not pressed:
else {
// if the mouse is pressed, release it:
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
delay(responseDelay);
}
/*
reads an axis (0 or 1 for x or y) and scales the analog input range to a range
from 0 to <range>
*/
int readAxis(int thisAxis) {
// read the analog input:
int reading = analogRead(thisAxis);
// map the reading from the analog input range to the output range:
reading = map(reading, 0, 1023, 0, range);
// if the output reading is outside from the rest position threshold, use it:
int distance = reading - center;
if (abs(distance) < threshold) {
distance = 0;
}
// return the distance for this axis:
return distance;
}
Concernant le branchement :
Coté Joystick
Jaune X
Bleu SW
Vert Y
Rouge 5V
Noir GND
Coté Carte
Jaune A1
Bleu 9
Vert A0
Rouge 5V
Noir GND
J'ai voulu faire un beau dessin comme vous vous faites vos branchements mais je n'ai pas trouvé ou comment vous faites
Bonjour @foufouner
Ca y est, je viens de réaliser mon premier projet Arduino
J'ai voulu faire un beau dessin comme vous vous faites vos branchements mais je n'ai pas trouvé ou comment vous faites
papier , crayon , règle... ce n'est pas 'bling bling', c'est rapide et va à l'essentiel
Les belles images en couleur que l'on voit so uvent n'apportent pas d'information essentielles pour comprendre le fonctionnement elles servent plutôt à cloner un montage.
Remarque : dans le code de l'exemple JoystickMouseControl.ino repris ici il ne faut pas confondre entre deux boutons switchPIn et mouseButton
Si le joystick possède un bouton il doit être reié à 'mouseButton' pour jouer le rôle d'un clic gauche de souris, est-ce le cas ?
Voici ici le bouton que j'ai acheté
Voici mon projet
/*
JoystickMouseControl
Controls the mouse from a joystick on an Arduino Leonardo, Micro or Due.
Uses a pushbutton to turn on and off mouse control, and a second pushbutton
to click the left mouse button.
Hardware:
- 2-axis joystick connected to pins A0 and A1
- pushbuttons connected to pin D2 and D3
The mouse movement is always relative. This sketch reads two analog inputs
that range from 0 to 1023 (or less on either end) and translates them into
ranges of -6 to 6.
The sketch assumes that the joystick resting values are around the middle of
the range, but that they vary within a threshold.
WARNING: When you use the Mouse.move() command, the Arduino takes over your
mouse! Make sure you have control before you use the command. This sketch
includes a pushbutton to toggle the mouse control state, so you can turn on
and off mouse control.
created 15 Sep 2011
updated 28 Mar 2012
by Tom Igoe
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/JoystickMouseControl
*/
#include "Mouse.h"
// set pin numbers for switch, joystick axes, and LED:
const int switchPin = 2; // switch to turn on and off mouse control
const int mouseButton = 6; // input pin for the mouse pushButton
const int xAxis = A0; // joystick X axis
const int yAxis = A1; // joystick Y axis
const int ledPin = 5; // Mouse control LED
// parameters for reading the joystick:
int range = 12; // output range of X or Y movement
int responseDelay = 5; // response delay of the mouse, in ms
int threshold = range / 4; // resting threshold
int center = range / 2; // resting position value
bool mouseIsActive = false; // whether or not to control the mouse
int lastSwitchState = LOW; // previous switch state
void setup() {
pinMode(switchPin, INPUT); // the switch pin
pinMode(ledPin, OUTPUT); // the LED pin
// take control of the mouse:
Mouse.begin();
}
void loop() {
// read the switch:
int switchState = digitalRead(switchPin);
// if it's changed and it's high, toggle the mouse state:
if (switchState != lastSwitchState) {
if (switchState == HIGH) {
mouseIsActive = !mouseIsActive;
// turn on LED to indicate mouse state:
digitalWrite(ledPin, mouseIsActive);
}
}
// save switch state for next comparison:
lastSwitchState = switchState;
// read and scale the two axes:
int xReading = readAxis(A0);
int yReading = readAxis(A1);
// if the mouse control state is active, move the mouse:
if (mouseIsActive) {
Mouse.move(xReading, yReading, 0);
}
// read the mouse button and click or not click:
// if the mouse button is pressed:
if (digitalRead(mouseButton) == HIGH) {
// if the mouse is not pressed, press it:
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
}
// else the mouse button is not pressed:
else {
// if the mouse is pressed, release it:
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
delay(responseDelay);
}
/*
reads an axis (0 or 1 for x or y) and scales the analog input range to a range
from 0 to <range>
*/
int readAxis(int thisAxis) {
// read the analog input:
int reading = analogRead(thisAxis);
// map the reading from the analog input range to the output range:
reading = map(reading, 0, 1023, 0, range);
// if the output reading is outside from the rest position threshold, use it:
int distance = reading - center;
if (abs(distance) < threshold) {
distance = 0;
}
// return the distance for this axis:
return distance;
}
Coté Joystick
Jaune X
Bleu SW
Vert Y
Rouge 5V
Noir GND
Coté Carte
Jaune A0
Bleu 6
Vert A1
Rouge 5V
Noir GND
Normalement oui, j'ai fait exactement comme sur le tutoriel et mon bouton possède un clic. Peux-tu m'éclairer ce que je dois modifier dans le code ? Merci d'avance
Bonjour
d'assurer de la cohérence entre le code et le câblage pour qui est du contact correspondant au bouton du joystick
D'après le message #16 on a d'une part :
Côte carte
Jaune A1
Bleu 9 = SW Joystick
Vert A0
Rouge 5V
Noir GND
d'autre part
const int mouseButton = 3; // input pin for the mouse pushButton
ça ne coîncide pas