Avexiens thierry60 Posté(e) 11 avril 2018 Avexiens Signaler Share Posté(e) 11 avril 2018 Ok pour la monture et je ne connais pas cette marque de résistance Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 11 avril 2018 Auteur Avexiens Signaler Share Posté(e) 11 avril 2018 On continue Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 11 avril 2018 Auteur Avexiens Signaler Share Posté(e) 11 avril 2018 [glow=red]3[/glow] Projet Dobson à très long terme (300F5 qui deviendra surement un 250F5)Alu et carbone. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 30 mai 2018 Auteur Avexiens Signaler Share Posté(e) 30 mai 2018 Le projet du focuseur est terminé, plus qu à tester Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 30 mai 2018 Administrators Signaler Share Posté(e) 30 mai 2018 j'avais loupé le post sur le dob ! beau projet, j'adore les dob minimalistesjuste pour la collimation du secondaire : je ne vois que deux vis... le pivot est sur l'emplacement de "la troisième vis" ?sinon pour ton focuser, j'ai hâte de voir si ça marche bien (je le trouve juste démesuré par rapport à la lulu ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 30 mai 2018 Auteur Avexiens Signaler Share Posté(e) 30 mai 2018 Yep Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens peppuccio Posté(e) 30 mai 2018 Avexiens Signaler Share Posté(e) 30 mai 2018 sinon pour ton focuser, j'ai hâte de voir si ça marche bien (je le trouve juste démesuré par rapport à la lulu )Une fois sur une 130 tout rentrera dans l'ordre Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 3 juin 2018 Auteur Avexiens Signaler Share Posté(e) 3 juin 2018 Bonsoir,Vu la fin de mes projets [glow=red]1[/glow] & [glow=red]2[/glow] (PC et focuseur)Et le projet du DOBSON [glow=red]3[/glow] est de longue date,Voici les prochains :[glow=red]4[/glow] Un boitier d'alimentation 12V et 5V fixé sur la lunette (si si j'ai encore de la place )beaucoup moins cher qu'un hitec [glow=red]5[/glow] Un cover motorisé avec des leds (dark et flat automatique), encore un peu de place sur la lulu .http://indilib.org/support/tutorials/165-diy-auto-indi-telescope-cover.html Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 6 juin 2018 Auteur Avexiens Signaler Share Posté(e) 6 juin 2018 état d'avancement (pré étude):[glow=red]4[/glow] composants standards commandés, écran volt/amp, pcb avec 2 usb, 7 DC (12V in, 4x12V out, 2x 5V out).[glow=red]5[/glow] composants standards commandés, écran électroluminescent, bras de levier, servo en cour de recherche (Savox 252MG). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens peppuccio Posté(e) 6 juin 2018 Avexiens Signaler Share Posté(e) 6 juin 2018 Très intéressé par ton projet N° 4. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens Axel Posté(e) 6 juin 2018 Avexiens Signaler Share Posté(e) 6 juin 2018 Très intéressés par ton projet 5 pour notre observatoire en remote. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 3 septembre 2018 Auteur Avexiens Signaler Share Posté(e) 3 septembre 2018 Pour fredo la station météo DIYBon c est du linux, mais avec une carte raspberry à 30€, ça peut le faire.http://indilib.org/support/tutorials/177-howto-configure-compile-wire-print-and-assemble-the-induino-meteostation.html Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 7 septembre 2018 Auteur Avexiens Signaler Share Posté(e) 7 septembre 2018 [glow=red]6[/glow] la Barrevex® Le projet pour Adrien co-concepteur C'est une barre fixé sur la lunette comprenant:- un hub de 7 usb3- une gestion du focuser DIY (protocole Moonlite)- multiprise 12 V + Resistances chauffantes Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens Axel Posté(e) 10 septembre 2018 Avexiens Signaler Share Posté(e) 10 septembre 2018 Génial ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 10 septembre 2018 Administrators Signaler Share Posté(e) 10 septembre 2018 as tu estimé le coût du BARREX une fois en ordre de marche ? car tu risque d'avoir des clients au fur et a mesure que les mountHubPro tomberont en panne de mémoire, il y en a 6 au club, dont deux rien que pour moi Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 10 septembre 2018 Administrators Signaler Share Posté(e) 10 septembre 2018 dis ça me fait penser à un truc : tu pourrais ajouter deux options dans la BARREX : 1. un indicateur de consommation2 un équivalent du TemperHum pour moduler les RC automatiquement en fonction de l'humidité Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens thierry60 Posté(e) 11 septembre 2018 Avexiens Signaler Share Posté(e) 11 septembre 2018 C’est vraiment tres bien ce que tu fais Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 27 septembre 2018 Auteur Avexiens Signaler Share Posté(e) 27 septembre 2018 Pour ceux qui s'interesse à un cover/batinov et un flip flat pour du DIYJ'ai trouver ça ...https://github.com/cytan299/flip_mask_lamp Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 20 mai 2019 Auteur Avexiens Signaler Share Posté(e) 20 mai 2019 Le projet [glow=red]5[/glow] est sur le finich...Une petite description:Réalisation d'un boite à flat motorisée sur une TS80/480 (triplet).Les contraintes:- fonctionnement sous linux (Ubuntu via RPI/Tinkerboard)- emcombrement réduit- prix low cost- 12V ou 5VPour commencer, j'etait parti sur un fonctionnement sur raspberry (via servo blaster), mais le flat sera restreint à ce type architecture. Puis j'ai laisser tomber ce system quelque mois quand il ne fonctionnait que sur un RPI3B+ (raspberry) mais pas sur ma tinkerboard (format identique à un raspberry).Mais un beau jour je suis tomber sur un code sur github à ce sujet, exploitant le driver d'Aniltak (FlipFlat d'Optec).Super, j'était parti sur un arduino uno, et ça fonctionne comme le FlatMan (celui sans motorisation), il ne me restait que le code du servo à réaliser, mais trop dur pour moi.A ce stade, il conviendra dans un observatoire avec un écran led sur un mur, mais pas à du nomade... Quand vient un post sur webastro à ce sujet , deux trois ligne de code plus tard et ca bouge mais cet arduino est gros, trop gros pour etre mis sur le par-buée de ma lunette (taille d'une carte de crédit).Je decide donc de prendre, un arduino pro micro et de faire ma propre carte electronique.(alimentée en 5V)Quelques jours plus tard et quelques soudures, le premier test est fonctionel. hop on part sur la 3D, on imprime et on retest tout est OK.Pour Les fournitures:un servomoteur 20kg 270° mais un 180° fonctionne aussi, tout dépend de l'angle d'ouverture que vous voulez.Ainsi que son bras.Pour la partie eclairage, les leds et la connectionLe mosfet qui sert à controler, sur 255 pas, la luminosité de la lumière.La prisede l alimentation en 5V.et l'Arduino.Maintenant, je vais changer la bande de led qui n'est pas tip top en diffusion avec le plexi blanc que j 'ai, j'ai commandé ceci, on vera bien... (pour du narrowband, ce n'est pas assez pluissant à mon gout , mais pas tester)Le 3D est adaptable à différente lunette il faut juste me donner le diamètre du par-buée (celui qui à envie de s'en faire un). fixation par tyrap ou scratch (en fonction du poids)coupe de la partie eclairage:Le code pour l'arduino (à copier) /* What: LEDLightBoxAlnitak - PC controlled lightbox implmented using the Alnitak (Flip-Flat/Flat-Man) command set found here: http://www.optecinc.com/astronomy/pdf/Alnitak Astrosystems GenericCommandsR3.pdf Who: Created By: Jared Wellman - jared@mainsequencesoftware.com When: Last modified: 2013/May/05 Typical usage on the command prompt: Send : >S000\n //request state Recieve : *S19000\n //returned state Send : >B128\n //set brightness 128 Recieve : *B19128\n //confirming brightness set to 128 Send : >J000\n //get brightness Recieve : *B19128\n //brightness value of 128 (assuming as set from above) Send : >L000\n //turn light on (uses set brightness value) Recieve : *L19000\n //confirms light turned on Send : >D000\n //turn light off (brightness value should not be changed) Recieve : *D19000\n //confirms light turned off. */ #include <EEPROM.h> int position_cap; #include <Servo.h> Servo myservo; volatile int ledPin = 11; volatile int servoPin = 9; // the pin that the servo signal is attached to, needs to be a PWM pin. int brightness = 0; enum devices { FLAT_MAN_L = 10, FLAT_MAN_XL = 15, FLAT_MAN = 19, FLIP_FLAT = 99 }; enum motorStatuses { STOPPED = 0, RUNNING }; enum lightStatuses { OFF = 0, ON }; enum shutterStatuses { UNKNOWN = 0, // ie not open or closed...could be moving CLOSED, OPEN }; int deviceId = FLIP_FLAT; int motorStatus = STOPPED; int lightStatus = OFF; int coverStatus = EEPROM.get(position_cap,coverStatus); const int impulsion_min=450; const int impulsion_max=2500; int relai=7; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(servoPin, OUTPUT); pinMode(relai, OUTPUT); analogWrite(ledPin, 0); digitalWrite(relai, LOW); myservo.write(0); myservo.attach(9,impulsion_min,impulsion_max); } void loop() { handleSerial(); } void handleSerial() { delay(100); if( Serial.available() >= 5 ) // all incoming communications are fixed length at 6 bytes including the \n { char* cmd; char* data; char temp[10]; int len = 0; char str[20]; memset(str, 0, 20); // I don't personally like using the \n as a command character for reading. // but that's how the command set is. // Serial.readBytesUntil('\n', str, 20); Serial.readBytes( str, 5); cmd = str + 1; data = str + 2; // useful for debugging to make sure your commands came through and are parsed correctly. if( false ) { sprintf( temp, "cmd = >%s%s;", cmd, data); Serial.println(temp); } switch( *cmd ) { /* Ping device Request: >P000\n Return : *Pii000\n id = deviceId */ case 'P': sprintf(temp, "*P%d000\n", deviceId); Serial.print(temp); break; /* Open shutter Request: >O000\n Return : *Oii000\n id = deviceId This command is only supported on the Flip-Flat! */ case 'O': sprintf(temp, "*O%d000\n", deviceId); SetShutter(OPEN); EEPROM.put(position_cap,OPEN); Serial.print(temp); break; /* Close shutter Request: >C000\n Return : *Cii000\n id = deviceId This command is only supported on the Flip-Flat! */ case 'C': sprintf(temp, "*C%d000\n", deviceId); SetShutter(CLOSED); EEPROM.put(position_cap,CLOSED); Serial.print(temp); break; /* Turn light on Request: >L000\n Return : *Lii000\n id = deviceId */ case 'L': sprintf(temp, "*L%d000\n", deviceId); Serial.print(temp); lightStatus = ON; analogWrite(ledPin, brightness); break; /* Turn light off Request: >D000\n Return : *Dii000\n id = deviceId */ case 'D': sprintf(temp, "*D%d000\n", deviceId); Serial.print(temp); lightStatus = OFF; analogWrite(ledPin, 0); break; /* Set brightness Request: >Bxxx\n xxx = brightness value from 000-255 Return : *Biiyyy\n id = deviceId yyy = value that brightness was set from 000-255 */ case 'B': brightness = atoi(data); if( lightStatus == ON ) analogWrite(ledPin, brightness); sprintf( temp, "*B%d%03d\n", deviceId, brightness ); Serial.print(temp); break; /* Get brightness Request: >J000\n Return : *Jiiyyy\n id = deviceId yyy = current brightness value from 000-255 */ case 'J': sprintf( temp, "*J%d%03d\n", deviceId, brightness); Serial.print(temp); break; /* Get device status: Request: >S000\n Return : *SidMLC\n id = deviceId M = motor status( 0 stopped, 1 running) L = light status( 0 off, 1 on) C = Cover Status( 0 moving, 1 closed, 2 open) */ case 'S': sprintf( temp, "*S%d%d%d%d\n",deviceId, motorStatus, lightStatus, EEPROM.get(position_cap,coverStatus)); Serial.print(temp); break; /* Get firmware version Request: >V000\n Return : *Vii001\n id = deviceId */ case 'V': // get firmware version sprintf(temp, "*V%d001\n", deviceId); Serial.print(temp); break; } while( Serial.available() > 0 ) Serial.read(); } } void SetShutter(int val) { if( val == OPEN && coverStatus != OPEN ) { for (int angle = 25; angle <= 55; angle+=1) { myservo.write (angle); delay (70); } myservo.write (115); for (int angle = 115; angle <= 145; angle+=1) { myservo.write (angle); delay (70); } coverStatus = OPEN; // TODO: Implement code to OPEN the shutter. } else if( val == CLOSED && coverStatus != CLOSED ) { for (int angle = 145; angle > 115; angle-=1) { myservo.write (angle); delay (70); } myservo.write (55); for (int angle = 55; angle > 25; angle-=1) { myservo.write (angle); delay (70); } coverStatus = CLOSED; // TODO: Implement code to CLOSE the shutter } else { // TODO: Actually handle this case coverStatus = val; } } PS: normalement il doit fonctionner sous windows via sharpcap et autres (test à faire) la différence de prix est significative 500$ contre 50€ à tout casserImage de la réalisation Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 23 mai 2019 Auteur Avexiens Signaler Share Posté(e) 23 mai 2019 ajout du code de l'arduino. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 10 juillet 2019 Auteur Avexiens Signaler Share Posté(e) 10 juillet 2019 Un ptit upPour vous montrer en fonctionnement sous Kstar/Ekos/Indihttps://www.youtube.com/watch?v=aM7uLZ4IfAA. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 12 août 2019 Auteur Avexiens Signaler Share Posté(e) 12 août 2019 Juste un petit retour, j ai monté les leds neopixels et ca va beaucoup mieux.les flat ont été fait avec le panneau régler sur 10 en termes de luminosité (sur 255, ça laisse de la marge por le narrow .voici le rendu, en fausse couleur biensur, sur un stack de dix flats en luminance. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 12 août 2019 Administrators Signaler Share Posté(e) 12 août 2019 cool...on va peut etre te passer un commande rémunérée chez CPAFO sinon pour tes flat, n'hesite pas a mettre la purée question lux, histoire d'avoir un bon RSB. car sur l'image que tu nous montre, j'ai l'impressions qu'il y a du bruit Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 12 août 2019 Auteur Avexiens Signaler Share Posté(e) 12 août 2019 oui de lecture surement? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 12 août 2019 Administrators Signaler Share Posté(e) 12 août 2019 fais une soustraction d'offset....ce sera plus clair Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens hoxca Posté(e) 16 août 2019 Avexiens Signaler Share Posté(e) 16 août 2019 hum...Frédo, pour la calibration; avec le comportement des CMOS actuels, je penche plutôt pour la realisation de DarkFlat.La soustraction des offsets étant parfois problématique sur les lumières.Ceci dit, s'il s'agit juste d'analyser les flats alors oui une simple soustraction de l'offset fera l'affaire.+1 avec fredo sur le bruit dans l'image en fausse couleur. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 19 août 2019 Auteur Avexiens Signaler Share Posté(e) 19 août 2019 Merci pour ces retours.J'ai soustrait avec pixelmath, mais pas de grande différence sur le bruit (surement que j'ai mal fait la soustraction). Est-ce le bon procédé?pour info à -10°(pour 40000ADU sur 65M):-10 flats en L pour une durée de 0.02 secondes par flat -10 flats en R pour une durée de 0.1 secondes par flat -10 flats en V pour une durée de 0.06 secondes par flat -10 flats en B pour une durée de 0.04 secondes par flat Si je comprend bien soit je fait des darks avec le temps expos correspondant pour chaque serie de flats et/ou j'augmente la luminosité du panneau pour être au plus proche de l'exposition d'un offset (50µs pour ma cam, soit 0.00005s)? J'avoue être un peu étonné de ce bruit.J'ai mis un empilement de bias et la série en luminance (Brute) dans le -asso.org/filerun/#/HOME/Images/Supaii%20(olivier)/test_flat'> , si vous avez le temps... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 19 août 2019 Administrators Signaler Share Posté(e) 19 août 2019 si tu es en dessous de la secondes les dark lfat ne sont absolument pas nécessaire, surtout a -10°C.il faut plus de flatapres tout ça ne te coute rien... fais en 50.... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens hoxca Posté(e) 19 août 2019 Avexiens Signaler Share Posté(e) 19 août 2019 Nous avons ici mélangé 2 sujets Pour limiter le bruit des flats il n’y a que la réduction statistique qui peut aider. Le problème des bias avec les capteurs à faibles niveau de bruit, c’est que leurs soustractions peut nous amener dans des valeurs négatives (sur des Lumières)!Il y a 2 solutions, ajout d’un pedestal dans PI ou darkflat. Le rôle du darkflat c’est de supprimer l’operation de soustraction du bias pour calibrer en une seule passe. Oui, le darkflat ce sont des poses de darkflat au même condition que la prise de flats. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 19 août 2019 Administrators Signaler Share Posté(e) 19 août 2019 je ne pige pas. est tu entrain de dire qu'un darflat peu avoir des valeur plus faible qu'un offset ? (d’autant qu'en théorie (mais ça commence à etre ancien) je crois me souvenir qu'il faut soustraire les offset des dark, fusse t'il des darkflat.... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 19 août 2019 Auteur Avexiens Signaler Share Posté(e) 19 août 2019 intéressant sur le pedestalhttps://www.cloudynights.com/topic/542837-pedestalplease-explain-in-basic-terms/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens hoxca Posté(e) 19 août 2019 Avexiens Signaler Share Posté(e) 19 août 2019 Non Frédo, le bias n’est jamais au dessus des flats. En revanche, avec le faible bruit de ces caméras il arrive assez couramment qu’il passe au dessus des lights. Voilà pourquoi on fait du darkflat de nos jours Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Administrators frédogoto Posté(e) 19 août 2019 Administrators Signaler Share Posté(e) 19 août 2019 Non Frédo, le bias n’est jamais au dessus des flats d'un autre coté ce n'est pas ce que j'ai dit Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens hoxca Posté(e) 20 août 2019 Avexiens Signaler Share Posté(e) 20 août 2019 je ne pige pas. est tu entrain de dire qu'un darflat peu avoir des valeur plus faible qu'un offset ? (d’autant qu'en théorie (mais ça commence à etre ancien) je crois me souvenir qu'il faut soustraire les offset des dark, fusse t'il des darkflat.... Oui pour un darkflat à ces faibles vitesses ce n'est pas complètement improbable.Pour ce qui est de la soustraction, dans le cas ou l'on réalise des darkflats, on peut s'affranchir de la soustraction des offsets.Les offsets seront mécaniquement éliminés avec les darkflats, lors de la calibration des flats. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Avexiens supaii Posté(e) 23 août 2019 Auteur Avexiens Signaler Share Posté(e) 23 août 2019 Ajout du dernier code pour le flipflat, suit au changement des leds par des neopixels.Bibliothèque "servo.h" changée pour "Adafruit_TiCoServo.h" (compatibilité avec bibli pour neopixel)Ajout bibiothèque "Adafruit_NeoPixel.h" pour neopixel [spoil]/*What: LEDLightBoxAlnitak - PC controlled lightbox implmented using the Alnitak (Flip-Flat/Flat-Man) command set found here: http://www.optecinc.com/astronomy/pdf/Alnitak Astrosystems GenericCommandsR3.pdfWho: Created By: Jared Wellman - jared@mainsequencesoftware.comWhen: Last modified: 2013/May/05Typical usage on the command prompt:Send : >S000\n //request stateRecieve : *S19000\n //returned stateSend : >B128\n //set brightness 128Recieve : *B19128\n //confirming brightness set to 128Send : >J000\n //get brightnessRecieve : *B19128\n //brightness value of 128 (assuming as set from above)Send : >L000\n //turn light on (uses set brightness value)Recieve : *L19000\n //confirms light turned onSend : >D000\n //turn light off (brightness value should not be changed)Recieve : *D19000\n //confirms light turned off.*/#include //#include //Servo myservo;#include Adafruit_TiCoServo myservo;#include int position_cap;volatile int ledPin = 6; // the pin that the LED is attached to, needs to be a PWM pin.volatile int servoPin = 10; // the pin that the servo signal is attached to, needs to be a PWM pin.int brightness = 0;const int closeAngle=0; //25 // Angle of the servo when the cap is closeconst int openAngle=60; //45 // Angle of the servo when the cap is openconst int slowAngle=30; // Angle of the servo for approach to close/open// How many NeoPixels are attached to the Arduino?#define NUMPIXELS 61 // Popular NeoPixel ring size// Paramètre 1 = Le nombre de NéoPixels chainés// Paramètre 2 = No de broche de données (Sur votre Arduino, la plupart convient)// Paramètre 3 = Type de pixel (flags/drapeaux), a combiner ensemble en fonction du besoin:// NEO_KHZ800 flux de données à 800 KHz (plupart des NéoPixel basé sur les LEDs w/WS2812)// NEO_KHZ400 flux de données à 400 KHz (Pour les Pixels classiques 'v1' FLORA (pas les V2) pilotés par WS2811)// NEO_GRB Pixels sont raccordés en flux de donnée GRB (GRB=Green,Red,Blue=Vert,Rouge,Bleu - la plupart des produits NéoPixel)// NEO_RGB Pixels sont raccordés en flux de donnée RGB (RGB=Red,Green,Blue=Rouge,Vert,Bleu - Pixels FLORA v1, pas la v2)Adafruit_NeoPixel pixels(NUMPIXELS, ledPin, NEO_GRB + NEO_KHZ800);enum devices{ FLAT_MAN_L = 10, FLAT_MAN_XL = 15, FLAT_MAN = 19, FLIP_FLAT = 99};enum motorStatuses{ STOPPED = 0, RUNNING};enum lightStatuses{ OFF = 0, ON};enum shutterStatuses{ UNKNOWN = 0, // ie not open or closed...could be moving CLOSED, OPEN};int deviceId = FLIP_FLAT;int motorStatus = STOPPED;int lightStatus = OFF;int coverStatus = EEPROM.get(position_cap,coverStatus);void setup(){ // initialize the serial communication: Serial.begin(9600); // initialize the ledPin as an output: pinMode(ledPin, OUTPUT); //analogWrite(ledPin, 0); myservo.write(closeAngle); myservo.attach(servoPin,500,2500); pixels.begin(); pixels.show(); // Initialise tous les pixels à 'off' (éteint)}void loop(){ handleSerial();}void handleSerial(){ delay(100); if( Serial.available() >= 5 ) // all incoming communications are fixed length at 6 bytes including the \n { char* cmd; char* data; char temp[10]; int len = 0; char str[20]; memset(str, 0, 20); // I don't personally like using the \n as a command character for reading. // but that's how the command set is. // Serial.readBytesUntil('\n', str, 20); Serial.readBytes( str, 5); cmd = str + 1; data = str + 2; // useful for debugging to make sure your commands came through and are parsed correctly. if( false ) { sprintf( temp, "cmd = >%s%s;", cmd, data); Serial.println(temp); } switch( *cmd ) { /* Ping device Request: >P000\n Return : *Pii000\n id = deviceId */ case 'P': sprintf(temp, "*P%d000\n", deviceId); Serial.print(temp); break; /* Open shutter Request: >O000\n Return : *Oii000\n id = deviceId This command is only supported on the Flip-Flat! */ case 'O': sprintf(temp, "*O%d000\n", deviceId); SetShutter(OPEN); EEPROM.put(position_cap,OPEN); Serial.print(temp); break; /* Close shutter Request: >C000\n Return : *Cii000\n id = deviceId This command is only supported on the Flip-Flat! */ case 'C': sprintf(temp, "*C%d000\n", deviceId); SetShutter(CLOSED); EEPROM.put(position_cap,CLOSED); Serial.print(temp); break; /* Turn light on Request: >L000\n Return : *Lii000\n id = deviceId */ case 'L': sprintf(temp, "*L%d000\n", deviceId); Serial.print(temp); lightStatus = ON; //analogWrite(ledPin, brightness); // The first NeoPixel in a strand is #0, second is 1, all the way up // to the count of pixels minus one. for(int i=0; i // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255 // Here we're using a moderately bright green color: pixels.setPixelColor(i, pixels.Color(255, 255, 255)); pixels.setBrightness(brightness); pixels.show(); // Send the updated pixel colors to the hardware. } break; /* Turn light off Request: >D000\n Return : *Dii000\n id = deviceId */ case 'D': sprintf(temp, "*D%d000\n", deviceId); Serial.print(temp); lightStatus = OFF; //analogWrite(ledPin, 0); pixels.clear(); // Set all pixel colors to 'off' pixels.show(); // Send the updated pixel colors to the hardware. break; /* Set brightness Request: >Bxxx\n xxx = brightness value from 000-255 Return : *Biiyyy\n id = deviceId yyy = value that brightness was set from 000-255 */ case 'B': brightness = atoi(data); if( lightStatus == ON ) // analogWrite(ledPin, brightness); for(int i=0; i // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255 // Here we're using a moderately bright green color: pixels.setPixelColor(i, pixels.Color(255, 255, 255)); pixels.setBrightness(brightness); pixels.show(); // Send the updated pixel colors to the hardware. } sprintf( temp, "*B%d%03d\n", deviceId, brightness ); Serial.print(temp); break; /* Get brightness Request: >J000\n Return : *Jiiyyy\n id = deviceId yyy = current brightness value from 000-255 */ case 'J': sprintf( temp, "*J%d%03d\n", deviceId, brightness); Serial.print(temp); break; /* Get device status: Request: >S000\n Return : *SidMLC\n id = deviceId M = motor status( 0 stopped, 1 running) L = light status( 0 off, 1 on) C = Cover Status( 0 moving, 1 closed, 2 open) */ case 'S': sprintf( temp, "*S%d%d%d%d\n",deviceId, motorStatus, lightStatus, EEPROM.get(position_cap,coverStatus)); Serial.print(temp); break; /* Get firmware version Request: >V000\n Return : *Vii001\n id = deviceId */ case 'V': // get firmware version sprintf(temp, "*V%d001\n", deviceId); Serial.print(temp); break; } while( Serial.available() > 0 ) Serial.read(); }}void SetShutter(int val){ if( val == OPEN && coverStatus != OPEN ) { for (int angle = closeAngle; angle <= closeAngle + slowAngle; angle+=1) { myservo.write (angle); delay (70); } myservo.write (openAngle - slowAngle); for (int angle = openAngle - slowAngle; angle <= openAngle; angle+=1) { myservo.write (angle); delay (70); } coverStatus = OPEN; // TODO: Implement code to OPEN the shutter. } else if( val == CLOSED && coverStatus != CLOSED ) { for (int angle = openAngle; angle > openAngle - slowAngle; angle-=1) { myservo.write (angle); delay (70); } myservo.write (closeAngle + slowAngle); for (int angle = closeAngle + slowAngle; angle > closeAngle; angle-=1) { myservo.write (angle); delay (70); } coverStatus = CLOSED; // TODO: Implement code to CLOSE the shutter } else { // TODO: Actually handle this case coverStatus = val; } }[/spoil] Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.