Hello Once More,
Just for reference, the web application comes up w/ me enabling a
.service file on the BBBW. The website has worked w/ other BBBW related
flask-motor-html pages and motor movement.
...
Another factor is this...the bot, this four motor machine, moves w/ one
board w/ the same software but not the other BBBW w/ the same software.
Seth
P.S. If you have any ideas, please do not hesitate to ask any questions for
more info. and/or give advice. I have this date coming up and I want to
have this bot working for this specific date, e.g. w/ the BBBW, MotorCape,
and four motors.
On Sunday, March 10, 2019 at 10:18:29 PM UTC-5, Mala Dies wrote:
>
> Hello,
>
> I have a BBBW and MotorCape. I have tested some motors on each of the
> screw connectors on the MotorCape. Success! Anyway, when controlling four
> motors at once, I have come across some issues.
>
> ...
>
> My issue pertains to a Flask application w/ HTML to control the four
> motors via a website online.
>
> Here is some software to test out if you have the MotorCape:
>
> #!/usr/bin/python3
>
> # w/ help from #beagle on Freenode
>
> from flask import Flask, render_template
> import Adafruit_BBIO.GPIO as GPIO
> import Adafruit_BBIO.PWM as PWM
> import time
>
> class Motor:
> def __init__(self, dir_pin, pwm_pin, pwm_freq):
> self.dir_pin = dir_pin
> self.pwm_pin = pwm_pin
> self.value = 0
>
> PWM.start(pwm_pin, 0, pwm_freq)
> GPIO.setup(dir_pin, GPIO.OUT)
>
> def set(self, value):
> assert -100 <= value <= 100
> if (value < 0) != (self.value < 0):
> # changing direction
> PWM.set_duty_cycle(self.pwm_pin, 0)
> GPIO.output(self.dir_pin, value < 0)
> PWM.set_duty_cycle(self.pwm_pin, abs(value))
> self.value = value
>
> motor1 = Motor(dir_pin="P8_18", pwm_pin="P9_16", pwm_freq=2000)
> #motor2 = Motor(dir_pin="P8_16", pwm_pin="P9_14", pwm_freq=2000)
> #motor3 = Motor(dir_pin="P8_14", pwm_pin="P8_13", pwm_freq=2000)
> motor4 = Motor(dir_pin="P8_26", pwm_pin="P8_19", pwm_freq=2000)
>
> app = Flask(__name__)
> @app.route("/")
> @app.route("/<state>")
>
> def updates(state=None):
> if state == "F":
> motor1.set(100)
> motor4.set(100)
> time.sleep(.2)
> if state == "L":
> motor1.set(0)
> motor4.set(85)
> time.sleep(.2)
> if state == "R":
> motor1.set(85)
> motor4.set(0)
> time.sleep(.2)
> if state == "S":
> motor1.set(0)
> motor4.set(0)
> time.sleep(.2)
> if state == "REV":
> motor1.set(-75)
> motor4.set(-75)
> time.sleep(.2)
> if state == "REV_L":
> motor1.set(-75)
> motor4.set(0)
> time.sleep(.2)
> if state == "REV_R":
> motor1.set(0)
> motor4.set(-75)
> time.sleep(.2)
>
> template_data = {
> "title" : state,
> }
> return render_template("boboIV.html", **template_data)
>
> if __name__ == "__main__":
> app.run(host="0.0.0.0", port=5000, debug=True)
>
> ...
>
> Everything is "Pythonic" in the software but this C & P did not do it
> justice. You can see why. Anyway...here is the HTML software too.
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <title>{{ status }}</title>
> <meta charset="utf-8">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <link rel="stylesheet" href="
> https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
> <script src="
> https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script
> >
> <script src="
> https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></
> script>
> </head>
> <body>
>
> <div class="jumbotron text-center">
> <h1>MotorCape and BBBW!</h1>
> <p>This is a quick example on making motors move!</p>
> </div>
>
> <div class="container">
> <div class="row">
> <div class="col-sm-4 text-center">
> <h3>Agent One</h3>
> <p>More text and fun makings in life...</p>
> <p>Get ready to control some motors!</p>
> </div>
>
> <div class="col-sm-4 text-center">
> <h3>Agent Two</h3>
> <p>This bunch of online buttons will make your motors move</p>
> <!-- <img src=" http://0.0.0.0/?" "action=stream" alt="Unable to
> get video feed" width="300" height="300"> -->
> <a href="/F" id="on" class="button">FORWARD</a>
> <br><br>
> <a href="/L" id="on" class="button">LEFT</a>
> <a href="/R" id="on" class="button">RIGHT</a>
> <br><br>
> <a href="/S" id="on" class="button">STOP</a>
> <br><br>
> <a href="/REV" id="on" class="button">REVERSE</a>
> <br><br>
> <a href="/REV_L" id="on" class="button">REVERSE_L</a>
> <a href="/REV_R" id="on" class="button">REVERSE_R</a>
> </div>
>
> <div class="col-sm-4 text-center">
> <h3>Agent Three</h3>
> <p>I hope you had fun controlling your motors!</p>
> <p>Two, DC motors, a 12v battery, and a BBBW w/ MotorCape!</p>
> </div>
> </div>
> </div>
>
> </body>
> </html>
>
> That HTML software just makes a nice website that I got mostly from
> w3schools.com.
>
> Seth
>
> P.S. If you know why this software does not make the motors move, please
> let me know. I have worked w/ the MotorCape and I am not sure if I need to
> use config-pin, a u-boot overlay, or some type of whatever.
>
>
>
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/fe903bdc-bd4c-4a8e-9615-fb0c616fb654%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.