Git Product home page Git Product logo

hal's Introduction

HAL (Heuristically programmed ALgorithmic computer) is a sentient computer (or artificial intelligence) that controls the systems of the UrLab spacecraft and interacts with the Hackerspace crew.

Setup

$ sudo apt-get install arduino-core
$ virtualenv --distribute --no-site-packages ve
$ source ve/bin/activate
$ pip install -r requirements.txt

Compile & upload Arduino code

$ make

Communication avec l'Ambianceduino

$ python daemon.py

Interactive

$ python
>>> from ambianceduino import Ambianceduino
>>> a = Ambianceduino()
>>> a.run()  #Démarre le thread de lecture
>>> a.analogs() #Demande les valeurs des entrées analogiques à l'Ambianceduino
>>> a.stop() #Ferme le thread de communication

Programming Ambianceduino

La communication bidirectionnelle avec l'Ambianceduino se fait de manière asynchrone. On envoie des messages à l'arduino en utilisant les méthodes de l'objet Ambianceduino dans le thread principal.

Envoi de messages

Les méthodes d'envoi de message sont actuellement:

  • on() et off() pour allumer ou éteindre l'alimentation de puissance
  • delay(n) pour mettre la vitesse de l'animation des leds à 1000/n FPS. Appelée sans argument, demande seulement la valeur du délai actuel.
  • analogs() pour demander l'état des entrées analogiques
  • upload_anim(animation) envoie l'animation des LEDs à jouer. Une animation est constituée de 1 à 255 nombres de 8 bits non signés (de 0 à 255). La fonction attend une séquence d'entiers comme paramètre.

Réception de messages

Les messages sont récupérés dans un thread séparé. Pour lancer le thread de lecture, il faut appeler la methode run() d'un AmbianceduinoReader. Pour l'arrêter, il faut utiliser la méthode stop().

Pour récupérer les informations envoyées par l'ambianceduino, il faut utiliser les callbacks de la classe AmbianceduinoReader. Ces callbacks sont toutes les méthodes dont le nom commence par when_. Ceux-ci sont:

  • when_on(), when_off() appelées lorsque l'arduino confirme qu'il a allumé ou éteint l'alimentation de puissance
  • when_delay(n) appelé lorsque l'arduino envoie le délai actuel de l'animation des leds
  • when_anim(n) appelée lorsqu'une animation de leds a bien été reçue par l'arduino (paramètre: longueur de l'animation reçue)
  • when_bell() appelée lorsque la sonnette est pressée
  • when_door() appelée lorsque la porte des escaliers est ouverte
  • when_radiator() appelée lorsque la vanne du radiateur est ouverte et que l'alimentation est éteinte (le radiateur est allumé mais le hackerspace est fermé)
  • when_analogs(v) appelée lorsque les valeurs des entrées analogiques sont envoyées (paramètre: dictionnaire des entrées analogiques)
  • when_error(m) appelée lorsqu'un message d'erreur est reçu (paramètre: message)

hal's People

Contributors

titouanc avatar c4ptaincrunch avatar

Watchers

m.iko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.