import { ChangeEvent, MouseEventHandler, Ref, useEffect, useState } from "react"; import { useServo } from "../../hooks"; import { DynamicPinState } from "../../types/board"; import EvoInput from "../forms/EvoInput"; import Button from "../forms/Button"; import { Slider } from "../forms/Slider"; import { PatchServo } from "../../controllers/BoardController"; function Bar ({ index, servo }: { index: number, servo: DynamicPinState }) { const { setServoPin, setDegree, removeServo } = useServo(); const [percentage, setPercent] = useState(0); const [isListen, setListen] = useState(false); useEffect(() => { const deg = Math.floor((percentage / 1000) * 180); setDegree(servo.pin, deg); }, [percentage]); useEffect(() => { if (isListen) PatchServo(servo.pin, servo.state); }, [isListen, servo.state]) const toggleListen = () => { setListen(!isListen); } const handleChange = (e: ChangeEvent) => { const percent = Number.parseInt(e.target.value); if (!Number.isNaN(percent)) setPercent(percent); } const handleChangePin = (e: ChangeEvent) => { setServoPin(index, e.target.value); } const handleDelete = () => { removeServo(index); } return (
{!isListen ? ( Start ) : ( Stop )}
{servo.state+"°"}
) } function BarPlus ({ onClick }: { onClick?: MouseEventHandler }) { return ( ) } function ControlServo ({ refto }: { refto?: Ref }) { const { motoServo, addServo } = useServo(); const handleAdd = (): void => { let anopin = 5; for (let i = 0; i < motoServo.length; i++) { if (motoServo.filter(servo => (servo.pin == `A${anopin}` || servo.pin == anopin)).length > 0) { anopin--; } else break; } addServo(`A${anopin}`, 0); } return (

Servo

Servo motors is a type of electric motor designed to provide precise motion and accurate control. Servo motors use a feedback mechanism to control their shaft position and rotational speed.

{motoServo.map((servo, i) => ( ))} {motoServo.length < 6 && }
) } export default ControlServo;