예제 #1
0
    def detect_arduino(self):
        try:
            self.arduino_board_comboBox.clear()
            self.board = pyfirmata2.Arduino(pyfirmata2.Arduino.AUTODETECT)
            board_port = [str(self.board)]
            self.arduino_board_comboBox.addItems(board_port)
            it = pyfirmata2.util.Iterator(self.board)
            it.start()
            self.led = self.board.get_pin("d:3:p")  # set led pin of arduino

            self.oc_channel_comboBox.setEnabled(True)
            self.cfg_properties()
            self.exp_groupBox_1.setEnabled(True)
            self.exp_spinBox_1.setEnabled(True)
            self.frames_groupBox.setEnabled(True)
            self.delay_spinBox.setEnabled(True)
            self.interval_spinBox.setEnabled(True)
            self.Pulses_spinBox.setEnabled(True)

            self.led_groupBox.setEnabled(True)
            self.led_start_pwr_spinBox.setEnabled(True)
            self.led_pwr_inc_spinBox.setEnabled(True)
            self.save_groupBox_rec.setEnabled(True)
            self.rec_Button.setEnabled(True)

            # set info with default values
            self.frame_values_changed()
            self.led_values_changed()

        except KeyError:
            print("No Arduino Found")
예제 #2
0
    def __init__(
        self,
        port,
        steps_per_rev,
        dir_pin,
        step_pin,
        low_alert_pin,
        high_alert_pin,
        min_delay=2000,
    ):
        self.stepsPerRevolution = steps_per_rev
        self.minDelay = min_delay
        self.isRunning: bool = False

        try:
            self.board = pyfirmata2.Arduino(port, baudrate=115200)
        except:
            print('Błąd otwarcia portu Arduino')
        else:
            # Konfiguracja Arduino
            self.tempString = 'd:' + str(step_pin) + ':o'
            self.stepPin = self.board.get_pin('d:' + str(step_pin) + ':o')
            self.tempString = str('d:' + str(dir_pin) + ':o')
            self.dirPin = self.board.get_pin(self.tempString)
            self.tempString = str('d:' + str(low_alert_pin) + ':i')
            self.lowAlertPin = self.board.get_pin(self.tempString)
            self.tempString = str('d:' + str(high_alert_pin) + ':i')
            self.highAlertPin = self.board.get_pin(self.tempString)

            self.it = pyfirmata2.Iterator(self.board)
            self.it.start()

            print('Board init OK')
예제 #3
0
    def __init__(self):
        self.port = py.Arduino.AUTODETECT
        self.board = py.Arduino(self.port)

        self.digital_out = self.board.get_pin('d:2:o')
        self.analog_out = self.board.get_pin('d:3:p')

        self.HIGH = 1
        self.LOW = 0
예제 #4
0
 def validar(self):
    
     try:
         puerto = pyfirmata2.Arduino.AUTODETECT
         self.arduino = pyfirmata2.Arduino(puerto)
         self.mensaje['text'] = ("Estado: Conectado")
         self.mensaje['fg'] = ("green")
     
     except:
         self.mensaje['text'] = ("Estado: Desconectado")
         self.mensaje['fg'] = ("red")
         pass
예제 #5
0
    def __init__(self):
        self.port = py.Arduino.AUTODETECT  #initialize the port connecting to the board
        self.board = py.Arduino(
            self.port)  #initialize the board with corresponding port

        self.board.samplingOn(
        )  #be able to sample analog data (default is 19 ms)

        self.dig_in = self.board.get_pin(
            'd:2:i')  #initialize digital pin 2 as an input pin
        self.dig_in.enable_reporting(
        )  #allow for values (voltages) to be processed from the input pin
        self.dig_out = self.board.get_pin(
            'd:3:o')  #initialize digital pin 3 as an output pin

        self.HIGH = 1
        self.LOW = 0
예제 #6
0
def updating_first_arduino(data_temp_pressure_array=data_temp_pressure_array):
    while True:
        try:
            for chan_ind in range(6):
                data_temp_pressure_array[chan_ind] = 0

            board = pyfirmata2.Arduino('/dev/ard_temp')
            board.samplingOn(100)
            analog_0 = board.get_pin('a:0:i')
            analog_1 = board.get_pin('a:1:i')
            analog_2 = board.get_pin('a:2:i')
            analog_3 = board.get_pin('a:3:i')
            analog_4 = board.get_pin('a:4:i')
            analog_5 = board.get_pin('a:5:i')
            time.sleep(0.5)
            while True:
                try:
                    data_temp_pressure_array[0] = float(analog_0.read())
                    data_temp_pressure_array[1] = float(analog_1.read())
                    data_temp_pressure_array[2] = float(analog_2.read())
                    data_temp_pressure_array[3] = float(analog_3.read())
                    data_temp_pressure_array[4] = float(analog_4.read())
                    data_temp_pressure_array[5] = float(analog_5.read())
                    # print(analog_0.read())
                    # print([round(5*x, 3) for x in data_temp_pressure_array[0:6]])

                    time.sleep(1)
                    board.digital[13].write(1)
                    board.digital[13].write(0)
                except TypeError:
                    print('trying again Ard 1')
                    time.sleep(1)
                    continue

        except:
            print('Something is wrong, connecting Arduino 1 again')
            time.sleep(1)
            continue
def arduino_serial_check():
    try:
        serial_number1 = values['-IN-']
        window['output_2'].update(">>", background_color='#D7DBDD', text_color='orange')
        window['output_3'].update(">>", background_color='#D7DBDD', text_color='green')  # Clear variable
        window['-SER2-'].update(serial_number1)
        window['output_4'].update("-- Serial Port Testing --")
        print(f'Serial Number : {serial_number1}')
        board = pyfirmata2.Arduino('/dev/ttyUSB0')
        it = pyfirmata2.util.Iterator(board)
        it.start()
        analog_result = (analog_read_ao())
        window['timer'].update("11")
        window.Refresh()
    except serial.SerialException:
        print("Serial Port not available")
        window.FindElement('[ Start ]').Update(disabled=False)
        sg.PopupError('[ 0002 - Serial Port problem! Call Support ]')  # Shows red error button
        window['-IN-'].update("")  # clear variable IN
        print("################ FAILED #################################")
        window.Refresh()
        window['timer'].update("12")
        window.Refresh()
예제 #8
0
def updating_second_arduino(data_temp_pressure_array=data_temp_pressure_array):
    while True:
        try:
            for chan_ind in range(6, 12):
                data_temp_pressure_array[chan_ind] = 0

            board = pyfirmata2.Arduino('/dev/ard_pres')
            board.samplingOn(100)
            analog_0 = board.get_pin('a:0:i')
            analog_1 = board.get_pin('a:1:i')
            analog_2 = board.get_pin('a:2:i')
            analog_3 = board.get_pin('a:3:i')
            analog_4 = board.get_pin('a:4:i')
            analog_5 = board.get_pin('a:5:i')
            time.sleep(0.015011)
            while True:
                try:
                    data_temp_pressure_array[6] = float(analog_0.read())
                    data_temp_pressure_array[7] = float(analog_1.read())
                    data_temp_pressure_array[8] = float(analog_2.read())
                    data_temp_pressure_array[9] = float(analog_3.read())
                    data_temp_pressure_array[10] = float(analog_4.read())
                    data_temp_pressure_array[11] = float(analog_5.read())
                    # print('pressure ard signal')
                    # print([round(5*x, 3) for x in data_temp_pressure_array[10:11]])
                    time.sleep(1)
                    board.digital[13].write(1)
                    board.digital[13].write(0)
                except TypeError:
                    print('trying again Ard2 (pres)')
                    time.sleep(1)
                    continue

        except:
            print('Something is wrong, connecting Arduino 2 again')
            time.sleep(1)
            continue
def updating_first_arduino(both_arduinos_analog_pins=both_arduinos_analog_pins):
    while True:
        try:
            for chan_ind in range(6):
                both_arduinos_analog_pins[chan_ind] = 0

            board = pyfirmata2.Arduino('/dev/tty.usbmodem14201')
            board.samplingOn(100)
            analog_0 = board.get_pin('a:0:i')
            analog_1 = board.get_pin('a:1:i')
            analog_2 = board.get_pin('a:2:i')
            analog_3 = board.get_pin('a:3:i')
            analog_4 = board.get_pin('a:4:i')
            analog_5 = board.get_pin('a:5:i')
            time.sleep(0.5)
            while True:
                try:
                    both_arduinos_analog_pins[0] = float(analog_0.read())
                    both_arduinos_analog_pins[1] = float(analog_1.read())
                    both_arduinos_analog_pins[2] = float(analog_2.read())
                    both_arduinos_analog_pins[3] = float(analog_3.read())
                    both_arduinos_analog_pins[4] = float(analog_4.read())
                    both_arduinos_analog_pins[5] = float(analog_5.read())
                    # print(analog_0.read())
                    time.sleep(1)
                    board.digital[13].write(1)
                    board.digital[13].write(0)
                except TypeError:
                    print('trying again')
                    time.sleep(1)
                    continue

        except:
            print('Something is wrong, connecting Arduino 1 again')
            time.sleep(1)
            continue
예제 #10
0
            #word.append(dict_morsedecoder[letter])
            print letter, '\n'
            letter = ''
            continue
        letter += recording[i]
        if i == len(recording) - 1:
            #word.append(dict_morsedecoder[letter])
            debug_letter = dict_morsedecoder[letter]
            word.append(debug_letter)
    return word


try:
    #setting up the digital pins
    board = pfm.Arduino(
        pfm.Arduino.AUTODETECT
    )  # this line detects the COM on which the arduino is connected
    PIN_Button = int(raw_input("please input the pin number for the Button: "))
    PIN_LED = int(raw_input("please input the pin number for the LED: "))
    PIN_PIEZO = board.get_pin('d:6:p')  # set digital pin 6 to PWM mode
    PIN_Rotator = 0
    threshold_rotator = 0.8

    it = pfm.util.Iterator(board)  # required for all reading
    it.start()  # required for all reading

    din_button = board.digital[PIN_Button]
    din_button.mode = pfm.INPUT  # alternative way to set the reading/writing mode
    dout_light = board.digital[PIN_LED]
    din_rotator = board.analog[PIN_Rotator]
    din_rotator.enable_reporting()  #required for reading
예제 #11
0
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Warning: this code won't provide precise timing as it's using a
# delay opertation.

import pyfirmata2

# Adjust that the port match your system, see samples below:
# On Linux: /dev/tty.usbserial-A6008rIF, /dev/ttyACM0,
# On Windows: \\.\COM1, \\.\COM2
# PORT = '/dev/ttyACM0'
PORT = pyfirmata2.Arduino.AUTODETECT

# Creates a new board
board = pyfirmata2.Arduino(PORT)
print("Setting up the connection to the board ...")
# default sampling interval of 19ms
board.samplingOn()

# Setup the digital pin
digital_0 = board.get_pin('d:6:i')
digital_0.enable_reporting()

while (True):
    if str(digital_0.read()) == 'True':
        print("Button pressed")
    elif str(digital_0.read()) == 'False':
        print("Button not pressed")
    else:
        print("Button has never been pressed")
예제 #12
0
import time
import pyfirmata2
import serial
import Motor

board = pyfirmata2.Arduino('COM4')
print(board)
# DirPinMotor2 = 10
# StepPinMotor2 = 11
DirPinMotor2 = board.get_pin('d:10:o')
StepPinMotor2 = board.get_pin('d:11:o')
MinDelayMotor2 = 0.001  # us

print('Kierunek prawo')
DirPinMotor2.write(1)  # Kierunek prawo
tempDelay = MinDelayMotor2
for i in range(0, 1600):
    StepPinMotor2.write(1)
    # time.sleep(0.001)
    StepPinMotor2.write(0)
    # time.sleep(0.0001)

print('Kierunek lewo')
DirPinMotor2.write(0)  # Kierunek lewo
for i in range(0, 1600):
    StepPinMotor2.write(1)
    # time.sleep(0.0001)
    StepPinMotor2.write(0)
    # time.sleep(0.00001)

print('FINISH')
예제 #13
0
'''
I.O.Test

IO Test

'''




import pyfirmata2
import time

board = pyfirmata2.Arduino(pyfirmata2.Arduino.AUTODETECT)

def test2(equipmentName):
    board.digital[equipmentName].write(1)
    time.sleep(1)
    board.digital[equipmentName].write(0)
    time.sleep(1)
    board.digital[equipmentName].write(1)
    time.sleep(1)
    board.digital[equipmentName].write(0)
    time.sleep(1)
    pass

houseLight = 2
leverLeft = 3
leverRight = 4
feeder = 5
예제 #14
0
    parser = argparse.ArgumentParser()  #initiate the argparse object (parser)
    parser.add_argument("INP", help="Input pin (0-3)\n")  #add 1st argument
    parser.add_argument("thr", help="threshold (0 ~ 1)\n")  #add 2nd argument

    parser.add_argument(
        "duration",
        help="Duration of reading (positive float)\n")  #add 3rd argument
    args = parser.parse_args()  # call parse_args to parse the argument strings

    #assgining arguments to other variables  and convert to proper variable type
    INP = int(args.INP)
    thr = np.float(args.thr)
    duration = np.float(args.duration)

    #define the Arduino port board
    board = pfm.Arduino(pfm.Arduino.AUTODETECT)

    print("Initializing Arduino Board (%s)" % board.name)

    it = pfm.util.Iterator(board)  #necessary for analog reading
    it.start()  #necessary for analog reading

    p = board.analog[INP]  #initiate the analog pin to read
    p.enable_reporting()  #need to enable to get reading, otherwise return None

    print "Attempt to read from %s (A%d)\n" % (board.name, INP)

    c = core.Clock()  #initiate a clock for timing

    #setting up numpy array to store timing and values when flip of screen occur
    samplet_rec = np.zeros(int(duration * 2000) + 1)  #store for time
def analog_read_ao():
    #  ***************************Start internal variable****************************

    out_of_loop = 0

    # ****************************  End of global loop **************************
    while out_of_loop <= 2:
        if out_of_loop == 0:
            print("Serial Port is available...")
            window['output_4'].update(">>", background_color='#D7DBDD', text_color='red')  # Clear variable
            window['output_3'].update(">>", background_color='#D7DBDD', text_color='green')  # Clear variable
            window['output_2'].update("[ --Testing-- ]", background_color='yellow', text_color='black')
        window['-SER2-'].update(serial_number)
        window['-IN-'].update("")  # clear variable IN
        sg.OneLineProgressMeter('Testing Voltage PCB', out_of_loop + 1, 3, 'key')
        window.Refresh()
        print("Reading all voltages...")
        board = pyfirmata2.Arduino('/dev/ttyUSB0')
        it = pyfirmata2.util.Iterator(board)
        it.start()
        analog_input0 = board.get_pin('a:0:i')
        analog_input1 = board.get_pin('a:1:i')
        analog_input2 = board.get_pin('a:2:i')
        sleep(2)
        """  ******************   Analog port - A0 *************************"""
        analog_value0 = analog_input0.read()
        sleep(0.2)
        volts = float(5)
        out_a0_volts = ((analog_value0 * volts) / 1)
        print(f'Voltage port A0:  {"%.2f" % out_a0_volts}')
        time.sleep(0.2)
        """  ******************   Analog port - A1 *************************"""
        analog_value1 = analog_input1.read()
        volts = float(5)
        out_a1_volts = ((analog_value1 * volts) / 1)
        print(f'Voltage port A1: {"%.2f" % out_a1_volts}')
        time.sleep(0.2)
        """  ******************   Analog port - A2 *************************"""
        analog_value2 = analog_input2.read()
        volts = float(5)
        out_a2_volts = ((analog_value2 * volts) / 1)
        print(f'Voltage port A2: {"%.2f" % out_a2_volts}')
        time.sleep(0.2)
        """ *********************  Ending Analog port ************************"""
        out_of_loop += 1
        if out_of_loop == 1:
            print(f'Measure Volts checking: ..33 %')
        if out_of_loop == 2:
            print(f'Measure Volts checking: ..65 %')
            window['output_2'].update("Closing data...", background_color='yellow', text_color='black')
            window.Refresh()
        if out_of_loop == 3:
            window['output_2'].update(">")
            print(f'Measure Volts checking: ..100 %')
            window['output_2'].update(">>", background_color='#D7DBDD', text_color='orange')
            window['output_3'].update("[ - -PASS- - ]", background_color='#58D68D', text_color='black')
            window.Refresh()
        if out_of_loop == 3:
            a0 = float("%.2f" % out_a0_volts)
            a1 = float("%.2f" % out_a1_volts)
            a2 = float("%.2f" % out_a2_volts)
            print("Measures Voltage Done !")
            window.FindElement('[ Start ]').Update(disabled=False)
            window.FindElement('[ Close FCT ]').Update(disabled=False)
            window.Refresh()
            print("################ Final Test ###########################")
            return a0, a1, a2
    else:
        print("Reading Voltage code: 001")