Simple Fabric Heart Coasters Tutorial
Des dessous de verre en tissus carré, mais avec une forme de cœur. La technique est très maline.
— Liens directs
Des dessous de verre en tissus carré, mais avec une forme de cœur. La technique est très maline.
Elle est faite et pas sans mal. Ma petite machine Lidl a eu du mal avec les épaisseurs ! Mais ça rend vraiment bien.
Retour sur un four solaire et sur un ancien four solaire. ça permet de comparer et de comprendre avantages / inconvénients / erreurs à ne pas connaitre / astuces à suivre
Fait et validé. Par contre, si vous faites votre ruban vous-même, prenez en compte l'épaisseur dans la largeur du trou, sinon, ça coulisse mal.
C'est dingue de devoir avoir un guide pour un truc social qui devrait aider tous ceux qui en ont besoin de base…
Avec un tissu déperlant à l'intérieur, ça peut faire une bonne trousse de toilette de voyage !
sudo apt-get install python-mysqldb
CREATE TABLE IF NOT EXISTS `gpio` (
`id_gpio` int(2) NOT NULL,
`state` int(2) NOT NULL,
`mode` int(2) NOT NULL,
PRIMARY KEY (`id_gpio`)
)
#!/usr/bin/env python # -*- coding: utf-8 -*- # Import des modules import RPi.GPIO as GPIO import time import MySQLdb # Initialisation de la numerotation et des E/S GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) db = MySQLdb.connect("localhost", "root", "raspberry", "GPIO_CONTROLE") curs = db.cursor() def Update_State_GPIO(iGPIO, iState): curs.execute("""UPDATE gpio SET state=%s WHERE id_gpio=%s""",(iState,iGPIO)) while True: time.sleep(0.15) # Pour toutes les GPIO de la base curs.execute("SELECT * FROM gpio") rows = curs.fetchall() for row in rows: if (row[3]==1): GPIO.setup(int(row[0]), GPIO.OUT) if (GPIO.input(row[0])!=int(row[2])): GPIO.output(int(row[0]), int(row[2])) else: GPIO.setup(int(row[0]), GPIO.IN) Update_State_GPIO(int(row[0]), GPIO.input(int(row[0]))) db.commit()
import picamera import time import RPi.GPIO as GPIO # Definition de l'objet camera camera = picamera.PiCamera() # Lecture de l'incrementation fichier ficR = open('/home/pi/Programme/Python/Video_Drone/Videos/INCR.txt','r+') sINCR = ficR.read(3) print sINCR iINCR = int(sINCR) ficR.close() iINCR +=1 # Ecriture du fichier d'incrementation ficW = open('/home/pi/Programme/Python/Video_Drone/Videos/INCR.txt','wb') ficW.write(str(iINCR)) ficW.close() camera.rotation = 180 camera.start_recording('/home/pi/Programme/Python/Video_Drone/Videos/Flight' + str(iINCR) + '.h264') while (1): time.sleep(1)
@reboot sudo python /home/pi/Programme/Python/Video_Drone/Video_Reboot.py
sudo apt-get install gpac
MP4Box -add ./Flight9.h264 ./Flight9.mp4
#include "../Lib/libGPIO.h" #include <stdio.h> #include <stdlib.h> int main() { GPIO led("A23"); // "A23" ou kernel id = 23 led.pinMode(OUTPUT); while(1) { Delay(250); led.digitalWrite(HIGH); Delay(250); led.digitalWrite(LOW); } }
#include "../Lib/libGPIO.h" #include <stdio.h> #include <stdlib.h> int main() { GPIO led("A23"); // "A23" ou kernel id = 23 led.pinMode(OUTPUT); while(1) { led.digitalWrite(readButton()); } }
git clone https://github.com/kkiwill/Arietta_G25_GPIO_Library.git
cd ./Arietta_G25_GPIO_Library/Example
g++ ./Blink.cpp ../Lib/libGPIO.cpp -o Blink -lrt
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Socket_Event
import subprocess
import RPi.GPIO as GPIO
from Sys_Info import *
# Variables globale
DEBUT_TRAME = "R"
FIN_TRAME = "I"
SEPARATEUR = chr(0x02)
# Reception de la trame et renvoie d'une autre
def TraiteRecv(self, data):
# Variable
ToSend = ""
# Test si debut et fin de trame(pour vérification de trame complète)
if (data[:1] == DEBUT_TRAME and data[-1:] == FIN_TRAME):
data = data[1:len(data)-1]
# Selon contenue
if (data == "temp"):
ToSend = str(get_temperature())
if (data == "cpu"):
ToSend = str(get_cpu_speed())
if (data == "uptime"):
ToSend = get_up_stats()[0]
if (data == "ram"):
ToSend = str(get_ram()[1])+' ('+str(get_ram()[0])+')'
if (data == "nbproc"):
ToSend = str(get_process_count())
# GPIO mode
if (data[0:2] == "GM"):
try:
mode = data[2:3]
pin = int(data[3::])
if (mode == "I"):
GPIO.setup(pin,GPIO.IN)
else:
GPIO.setup(pin,GPIO.OUT)
except Exception, e:
ToSend = ("Erreur_%s" % e)
# GPIO write
if (data[0:2] == "GW"):
try:
etat = int(data[2:3])
pin = int(data[3::])
if (etat == 1):
GPIO.output(pin, GPIO.HIGH)
else:
GPIO.output(pin, GPIO.LOW)
except Exception, e:
ToSend = ("Erreur_%s" % e)
# GPIO read
if (data[0:2] == "GR"):
try:
pin = int(data[2::])
etat = GPIO.input(pin)
ToSend = str(etat)
except Exception, e:
ToSend = ("Erreur_%s" % e)
# On renvoie la donnée recu et la réponse (séparer par caract de 2)
Socket_Event.EchoHandler.handle_write(self, DEBUT_TRAME + data + SEPARATEUR + ToSend + FIN_TRAME)
# Definition de la socket
interface = "192.168.0.13"
port = 59004
# GPIO configuration
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
# Lancement de la socket
server = Socket_Event.EchoServer((interface, port), TraiteRecv)
server.serve_forever()
dmesg
sudo apt-get install GPartedPuis dans vos application lancer GParted, vous pouvez maintenant sélectionner votre carte SD et voir quelque chose comme le screenshot ci dessous :
sudo wget http://www.acmesystems.it/download/microsd/Arietta-30aug2014/kernel.tar.bz2Téléchargement de rootfs :
sudo wget http://www.acmesystems.it/download/microsd/Arietta-30aug2014/rootfs.tar.bz2On va maintenant décompresser ces deux archives dans les partitions avec pour le kernel :
sudo tar -xvjpSf kernel.tar.bz2 -C /media/$USER/KERNEL
sudo tar -xvjpSf rootfs.tar.bz2 -C /media/$USER/rootfsPenser à remplacer $USER par votre nom d'utilisateur :). Voila votre carte est prête à être démonter la carte SD puis brancher votre Arietta G25. Prochaine étape le premier démarrage.
sudo nano /media/$USER/rootfs/etc/network/interfacesEt éditer le fichier comme ceci :
sudo nano /etc/network/interfacesPuis ajouter les lignes suivantes :
sudo ifup usb0