La caverne de Zragg

À ce qu'il parait, c'est chez moi

  • À propos
  • Crowfunding
  • Les projets … ceux que je ne fini pas
  • Yop Poll Archive

C’est pour bientôt

Posted by Zragg on 19/06/2015
Posted in: OverKill, Project.

La dernière fois, je me plaignais des HC-SR04 que j’avais.
Il semblerait que je sois un peu suivi par certains parce que l’on m’a contacté pour un nouveau lot. Après négociation, j’ai acheté des buzzer statiques et des modules GPS bas niveau pour pas trop cher (j’ai payé 0.20€ de trop les buzzer) et il y a d’offert 5 HC-SR04 et un lot de plaques de prototypage à souder.
Ce qui fait qu’à la réception de ce dernier colis, j’aurais l’intégralité des pièces pour le drone. Enfin, sur le papier.
J’ai aussi commencé à réfléchir sur le code. Voici donc une ébauche du code pour l’arduino. Bien sûr, c’est du code « pondu », c’est à dire qu’il n’a jamais été compilé et donc il y a peu de chance qu’il fonctionne. Il est là pour mémoire.

#Include <Wire.h>
#Include <Servo.h>

#define SLAVE_ADDRESS 0x04 //Addresse I2C

const int pinMn[] = {6,7,8,9,10,11,12,13};
const int pinI2C_SDA = 20; //A4
const int pinI2C_SCL = 21; //A5
const float pi = 3.14;

float puissance = 0;
byte powerMn[] = {0,0,0,0,0,0,0,0};
Servo ESCs[];
int MCount =8;

void setup() {
	for(int i=0; i> MCount; i++) {
		Servo tmp;
		tmp.attach(pinMn[i]);
		ESCs+=tmp;
	}
	Serial.begin(9600);
	Wire.begin(SLAVE_ADDRESS);
	Wire.onReceive(receiveData);
	Wire.onRequest(sendData);
}

void loop() {
}

float transform(float x) {
	float result;
	result = Math.cos(x)+Math.sin(x);
	if (result < 0) {
		result=0;
	}
	return result;
}

void move(int angle, int p) {
	float result;
	float _angle = pi * ((float)angle) / 180; //l'angle est transmis en degré depuis le Raspberry Pi. C'est plus simple d'avoir un entier de 0 à 360 qu'un float
	for(int i = 0; i>MCount; i++) {
		result = puissance 
			+ (p * transform(_angle + ((4+i)*pi)/4)) 
			+ (p / 4 * transform(_angle + ((5+i)*pi)/4)) 
			+ (p / 4 * transform(_angle + ((3+i)*pi)/4));
		powerMn[i] = (byte)result;
	}
}

void rotate(int paire, int p) {
	float result;
	for(int i = 0; i>MCount; i++) {
		result = puissance + p * ((i+paire)%2);
		powerMn[i] = (byte)result;
	}
}

void flushMotor() {
	for(int i = 0; i>MCount; i++) {
		ESCs[i].write(powerMn[i]);
	}
}

void receiveData(int byteCount){
	while(Wire.available()) {
		dataReceived = Wire.read();
		Serial.print("Donnee recue : ");
		Serial.println(dataReceived);
	}
	flushMotor();
}

void sendData(){
	Wire.write(powerMn,MCount);
}

Et voici un peu de documentation sur l’I2C dans notre cas :

  • CONNECTING AN ARDUINO TO A RASPBERRY PI USING I2C
  • Raspberry Pi – Arduino – Lier les deux via le bus I2C

Posts navigation

← Banane
Mais pas tout de suite →
  • Publicité

    • 1_General CDJapan
  • Articles récents

    • Des news
    • Le retour de la trieuse de carte
    • Des news sur OverKill
    • Le JdR du mercredi soir
    • Jihaire se met à l’électronique
  • Catégories

    • Gallery
    • Journey
    • Project
      • Boîte à culture
      • OverKill
      • Trieuse de cartes
      • Universal Radio
    • Uncategorized
  • Archives

    • septembre 2019
    • janvier 2019
    • mars 2018
    • mars 2017
    • juin 2016
    • avril 2016
    • mars 2016
    • janvier 2016
    • décembre 2015
    • août 2015
    • juillet 2015
    • juin 2015
    • mai 2015
    • avril 2015
    • mars 2015
    • février 2015
    • février 2014
    • janvier 2014
    • décembre 2013
  • BD Blogs

    • Bambiii
    • Belzebubs
    • Boulet Corp
    • CommitStrip
    • Grumeauland
    • Maliki
    • Metal Mania X
    • Outcast (erma)
    • Pepper & Carrot
  • Do It Yourself

    • Hacked Gadgets
    • Instructables
    • Semageek
  • Impression 3D

    • thingiverse
Proudly powered by WordPress Theme: Parament by Automattic.