--- /dev/null
+# Form implementation generated from reading ui file '/Users/tom/Documents/src/tactonlibrary-git/TactonDebug/MagicCircle/magiccircle.ui'
+#
+# Created by: PyQt6 UI code generator 6.2.0
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic6 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt6 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MagicCircleClass(object):
+ def setupUi(self, MagicCircleClass):
+ MagicCircleClass.setObjectName("MagicCircleClass")
+ MagicCircleClass.resize(268, 448)
+ self.centralWidget = QtWidgets.QWidget(MagicCircleClass)
+ self.centralWidget.setObjectName("centralWidget")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.centralWidget)
+ self.verticalLayout.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout.setSpacing(6)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self._canvas = QtWidgets.QGraphicsView(self.centralWidget)
+ self._canvas.setMinimumSize(QtCore.QSize(250, 250))
+ self._canvas.setMaximumSize(QtCore.QSize(250, 250))
+ self._canvas.setObjectName("_canvas")
+ self.verticalLayout.addWidget(self._canvas)
+ self.gridLayout_2 = QtWidgets.QGridLayout()
+ self.gridLayout_2.setSpacing(6)
+ self.gridLayout_2.setObjectName("gridLayout_2")
+ self.label_2 = QtWidgets.QLabel(self.centralWidget)
+ self.label_2.setObjectName("label_2")
+ self.gridLayout_2.addWidget(self.label_2, 2, 1, 1, 1)
+ self._speed = QtWidgets.QSpinBox(self.centralWidget)
+ self._speed.setMinimum(1)
+ self._speed.setMaximum(3000)
+ self._speed.setProperty("value", 180)
+ self._speed.setObjectName("_speed")
+ self.gridLayout_2.addWidget(self._speed, 2, 2, 1, 1)
+ self.label_3 = QtWidgets.QLabel(self.centralWidget)
+ self.label_3.setObjectName("label_3")
+ self.gridLayout_2.addWidget(self.label_3, 3, 1, 1, 1)
+ self._direction = QtWidgets.QComboBox(self.centralWidget)
+ self._direction.setObjectName("_direction")
+ self._direction.addItem("")
+ self._direction.addItem("")
+ self.gridLayout_2.addWidget(self._direction, 1, 2, 1, 1)
+ self.label = QtWidgets.QLabel(self.centralWidget)
+ self.label.setObjectName("label")
+ self.gridLayout_2.addWidget(self.label, 1, 1, 1, 1)
+ self._resolution = QtWidgets.QSpinBox(self.centralWidget)
+ self._resolution.setMinimum(4)
+ self._resolution.setMaximum(720)
+ self._resolution.setProperty("value", 360)
+ self._resolution.setObjectName("_resolution")
+ self.gridLayout_2.addWidget(self._resolution, 3, 2, 1, 1)
+ self.label_4 = QtWidgets.QLabel(self.centralWidget)
+ self.label_4.setObjectName("label_4")
+ self.gridLayout_2.addWidget(self.label_4, 0, 1, 1, 1)
+ self._frequency = QtWidgets.QSpinBox(self.centralWidget)
+ self._frequency.setMinimum(1)
+ self._frequency.setMaximum(400)
+ self._frequency.setProperty("value", 250)
+ self._frequency.setObjectName("_frequency")
+ self.gridLayout_2.addWidget(self._frequency, 0, 2, 1, 1)
+ self.verticalLayout.addLayout(self.gridLayout_2)
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setSpacing(6)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self._stop = QtWidgets.QPushButton(self.centralWidget)
+ self._stop.setObjectName("_stop")
+ self.horizontalLayout.addWidget(self._stop)
+ self._play = QtWidgets.QPushButton(self.centralWidget)
+ self._play.setObjectName("_play")
+ self.horizontalLayout.addWidget(self._play)
+ self.verticalLayout.addLayout(self.horizontalLayout)
+ MagicCircleClass.setCentralWidget(self.centralWidget)
+
+ self.retranslateUi(MagicCircleClass)
+ QtCore.QMetaObject.connectSlotsByName(MagicCircleClass)
+ MagicCircleClass.setTabOrder(self._frequency, self._direction)
+ MagicCircleClass.setTabOrder(self._direction, self._speed)
+ MagicCircleClass.setTabOrder(self._speed, self._resolution)
+ MagicCircleClass.setTabOrder(self._resolution, self._play)
+ MagicCircleClass.setTabOrder(self._play, self._stop)
+ MagicCircleClass.setTabOrder(self._stop, self._canvas)
+
+ def retranslateUi(self, MagicCircleClass):
+ _translate = QtCore.QCoreApplication.translate
+ MagicCircleClass.setWindowTitle(_translate("MagicCircleClass", "MagicCircle"))
+ self.label_2.setText(_translate("MagicCircleClass", "Speed (degrees/s)"))
+ self.label_3.setText(_translate("MagicCircleClass", "Resolution (steps/360°)"))
+ self._direction.setItemText(0, _translate("MagicCircleClass", "Clockwise"))
+ self._direction.setItemText(1, _translate("MagicCircleClass", "Counterclockwise"))
+ self.label.setText(_translate("MagicCircleClass", "Direction"))
+ self.label_4.setText(_translate("MagicCircleClass", "Frequency"))
+ self._stop.setText(_translate("MagicCircleClass", "Stop"))
+ self._play.setText(_translate("MagicCircleClass", "Play"))
\r
void TactonPlayerPreciseNew::setAngle(unsigned int angle)\r
{\r
- unsigned int x = cos(angle * M_PI / 180.0);\r
- unsigned int y = sin(angle * M_PI / 180.0);\r
- \r
+ byte amplitudes[4];\r
+ while (angle >= 360)\r
+ angle -= 360;\r
+ float x = cos(angle * M_PI / 180.0);\r
+ float y = sin(angle * M_PI / 180.0);\r
+\r
//vertical\r
if (angle < 180)\r
{\r
- analogWrite(_pins[TACTOR_UP], 255 * y * y);\r
- analogWrite(_pins[TACTOR_DOWN], 0);\r
+ amplitudes[TACTOR_UP] = 255 * y;\r
+ amplitudes[TACTOR_DOWN] = 0;\r
}\r
else\r
{\r
- analogWrite(_pins[TACTOR_DOWN], - 255 * y * y);\r
- analogWrite(_pins[TACTOR_UP], 0);\r
+ amplitudes[TACTOR_DOWN] = - 255 * y;\r
+ amplitudes[TACTOR_UP] = 0;\r
}\r
\r
//horizontal\r
if (angle < 90 || angle > 270)\r
{\r
- analogWrite(_pins[TACTOR_RIGHT], 255 * x * x);\r
- analogWrite(_pins[TACTOR_LEFT], 0);\r
+ amplitudes[TACTOR_RIGHT] = 255 * x;\r
+ amplitudes[TACTOR_LEFT] = 0;\r
}\r
else\r
{\r
- analogWrite(_pins[TACTOR_RIGHT], 0);\r
- analogWrite(_pins[TACTOR_LEFT], - 255 * x * x);\r
+ amplitudes[TACTOR_LEFT] = - 255 * x;\r
+ amplitudes[TACTOR_RIGHT] = 0;\r
}\r
+ setAmplitudes(4, amplitudes);\r
}\r
\r
-\r
//Stop any vibration\r
void TactonPlayerPreciseNew::stop()\r
{\r