Repo initial CARIA : MAJ Interface Bootle amélioré - Optimisation de la structure - amélioration des fonctionnalités - debug . . .
143 lines
5.1 KiB
JavaScript
143 lines
5.1 KiB
JavaScript
$(function(){
|
|
var isTouchDevice = "ontouchstart" in document.documentElement ? true : false;
|
|
var BUTTON_DOWN = isTouchDevice ? "touchstart" : "mousedown";
|
|
var BUTTON_UP = isTouchDevice ? "touchend" : "mouseup";
|
|
|
|
$("input[type='checkbox']").change(function() {
|
|
var id = this.id;
|
|
if (this.checked) {
|
|
$.post("/cmd", id, function(data, status){});
|
|
} else {
|
|
$.post("/cmd", "stop", function(data, status){});
|
|
}
|
|
});
|
|
|
|
$('input[type="range"]').change(function() {
|
|
var speed = this.value;
|
|
$.post('/cmd', {speed: speed});
|
|
});
|
|
});
|
|
// Test
|
|
$(function() {
|
|
$('#servo').change(function() {
|
|
var isChecked = $(this).is(':checked');
|
|
var action = isChecked ? 'start' : 'stop';
|
|
$.post('/servo_motor', { action: action });
|
|
});
|
|
});
|
|
$(function() {
|
|
$('#motor').change(function() {
|
|
var isChecked = $(this).is(':checked');
|
|
var action = isChecked ? 'start' : 'stop';
|
|
$.post('/motor_speed_move', { action: action });
|
|
});
|
|
});
|
|
$(function() {
|
|
$('#obstacle').change(function() {
|
|
var isChecked = $(this).is(':checked');
|
|
var action = isChecked ? 'start' : 'stop';
|
|
$.post('/infrared_obstacle_module', { action: action });
|
|
});
|
|
});
|
|
$(function () {
|
|
$("#lidar").change(function () {
|
|
var isChecked = $(this).is(":checked");
|
|
var action = isChecked ? "start" : "stop";
|
|
$.post("/lidar_module", { action: action });
|
|
});
|
|
});
|
|
$(function () {
|
|
$("#rfidrw").change(function () {
|
|
var isChecked = $(this).is(":checked");
|
|
var action = isChecked ? "start" : "stop";
|
|
$.post("/rfid_read_write_module", { action: action });
|
|
});
|
|
});
|
|
// Fonctionnalité
|
|
$(function () {
|
|
$("#ITO").change(function () {
|
|
var isChecked = $(this).is(":checked");
|
|
var action = isChecked ? "start" : "stop";
|
|
$.post("/infrared_tracking_objects", { action: action });
|
|
});
|
|
});
|
|
$(function () {
|
|
$("#IOA").change(function () {
|
|
var isChecked = $(this).is(":checked");
|
|
var action = isChecked ? "start" : "stop";
|
|
$.post("/infrared_obstacle_avoidance", {
|
|
action: action,
|
|
});
|
|
});
|
|
});
|
|
// Fonction pour mettre à jour l'angle de rotation de l'aiguille en fonction de la vitesse
|
|
function updateRotation(speed) {
|
|
const minSpeed = 0; // Vitesse minimale en km/h
|
|
const maxSpeed = 120; // Vitesse maximale en km/h
|
|
const maxAngle = 138; // Angle maximal de l'aiguille (correspondant à la vitesse maximale)
|
|
|
|
// Limiter la vitesse minimale
|
|
speed = Math.max(minSpeed, speed);
|
|
// Limiter la vitesse maximale
|
|
speed = Math.min(maxSpeed, speed);
|
|
|
|
// Calcul de l'angle en fonction de la vitesse
|
|
const angle = (speed / maxSpeed) * maxAngle;
|
|
|
|
// Mise à jour de l'aiguille avec le nouvel angle
|
|
updatePointerRotation(angle);
|
|
}
|
|
|
|
// Fonction pour mettre à jour l'aiguille avec un nouvel angle
|
|
function updatePointerRotation(angle) {
|
|
const minAngle = -130; // Angle minimal de l'aiguille
|
|
const maxAngle = 138; // Angle maximal de l'aiguille
|
|
|
|
// Limiter l'angle minimum
|
|
angle = Math.max(minAngle, angle);
|
|
// Limiter l'angle maximum
|
|
angle = Math.min(maxAngle, angle);
|
|
|
|
// Calculer la rotation en fonction de l'angle et de la direction
|
|
let rotation = (angle + 112) * 1.923; // Convertir l'angle en rotation (360/242)
|
|
|
|
// Mise à jour de l'aiguille
|
|
const pointer = document.getElementById("pointer");
|
|
pointer.style.transform = `translateX(-50%) rotate(${rotation}deg)`;
|
|
}
|
|
|
|
// Fonction pour mettre à jour le compteur avec la nouvelle valeur de vitesse
|
|
function updateCounter(speed) {
|
|
const counter = document.getElementById("counter");
|
|
// Ajouter des zéros devant la vitesse si elle est inférieure à 100
|
|
const formattedSpeed = ("000" + speed).slice(-3);
|
|
counter.textContent = formattedSpeed;
|
|
}
|
|
|
|
$(function () {
|
|
var isTouchDevice = "ontouchstart" in document.documentElement ? true : false;
|
|
var BUTTON_DOWN = isTouchDevice ? "touchstart" : "mousedown";
|
|
var BUTTON_UP = isTouchDevice ? "touchend" : "mouseup";
|
|
|
|
$("button").bind(BUTTON_DOWN, function () {
|
|
$(this).addClass("btn-pressed");
|
|
$.post("/cmd", this.id, function (data, status) {});
|
|
});
|
|
|
|
$("button").bind(BUTTON_UP, function () {
|
|
$(this).removeClass("btn-pressed");
|
|
$.post("/cmd", "stop", function (data, status) {});
|
|
});
|
|
|
|
$("input").change(function () {
|
|
var speed = this.value;
|
|
$("#speed-display").text(speed); // Met à jour l'élément HTML avec l'id 'speed-display' avec la nouvelle valeur
|
|
updateRotation(speed); // Met à jour l'aiguille avec la nouvelle vitesse
|
|
updateCounter(speed); // Met à jour le compteur avec la nouvelle vitesse
|
|
$.post("/cmd", { speed: speed }); // Envoie la nouvelle valeur de vitesse au serveur
|
|
});
|
|
|
|
// Positionner l'aiguille à la valeur 50 lors de l'initialisation
|
|
updateRotation(50);
|
|
});
|