Go Down

Topic: nano chino (Read 1 time) previous topic - next topic

0tt0

hola
he instalado el driver ch340, he subido el firmware, pero en el monitor serial le doy ordenes y no me contesta. Otra cosa, cuando subo el firmware apenas parpadea el led, mucho menos que cuando instalé el driver. Al proyecto le falta una última conexión a un cable que irá a los motores de una montura de un telescopio. ¿ Puede ser ese el problema?
Gracias

surbyte

Probaste el Simple Blink.ino del IDE?

0tt0

#2
Apr 08, 2018, 09:40 pm Last Edit: Apr 08, 2018, 09:59 pm by 0tt0
Hola
si te refieres al encendido/apagado del led, si lo he probado y funciona

surbyte

Y si funciona Blink cual es el problema con tu otro sketch.

Porque no lees las Normas del foro y publicas debidamente tu código y presentas el error que te marca. Usa etiquetas. Presta atención a lo que te pido.

0tt0

#4
Apr 09, 2018, 03:46 pm Last Edit: Apr 09, 2018, 04:13 pm by surbyte
Hola
Siempre intento poner atención a todo lo que me piden, soy novato en esto sólo quiero construir un goto para el telescopio ( el oficial me sale por 400€...)
Si prestases atención a lo que puse al principio te darías cuenta ( eeeh, sólo bromeo  :)  ) de que no me da error, he subido el Scketch al arduino, pero al probar los comandos en el monitor serial no me contesta como se supone que debería hacerlo , por ejemplo escribo CONNECT# y debería contestarme OK#, pero se queda en blanco.Al final te mando un pantallazo par que veas lo que me sale a veces un cuadrado y un signo de interrogación.
Gracias!
Code: [Select]
//0.
// This file is part of Arduino ST4.
//
// Arduino ST4 is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Arduino ST4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with Arduino ST4.  If not, see <http://www.gnu.org/licenses/>.
//
// Copyright Kevin Ferrare 2014

/*
 * Led indicates whether the software requested connection, it is shut off when the software disconnects
 */
const int pinLED = 13;

/**
 * An axis has a pin per direction.
 * Both pins cannot be up at the same time.
 */
class Axis {
private:
  int plusPin;
  int minusPin;
public:
  Axis(int plusPin, int minusPin) :
  plusPin(plusPin), minusPin(minusPin) {
  }
  void setupPins(){
    pinMode(this->plusPin, OUTPUT);
    pinMode(this->minusPin, OUTPUT);
  }
  void plus(){
    digitalWrite(this->minusPin, LOW);
    digitalWrite(this->plusPin, HIGH);
  }
  void minus(){
    digitalWrite(this->plusPin, LOW);
    digitalWrite(this->minusPin, HIGH);
  }
  void reset(){
    digitalWrite(this->minusPin, LOW);
    digitalWrite(this->plusPin, LOW);
  }
};

class Axis rightAscension(
2,//RA+ pin
5);//RA- pin
class Axis declination(
3,//DEC+ pin
4);//DEC- pin

void setup()
{
  rightAscension.setupPins();
  declination.setupPins();
  pinMode(pinLED, OUTPUT);
  //57.6k, 8 data bits, no parity, one stop bit.
  Serial.begin(57600, SERIAL_8N1);
  //Wait for serial port to connect. Needed for Leonardo only
  while (!Serial);
  Serial.println("INITIALIZED#");
}


void loop()
{
  if (Serial.available() > 0) {
    //Received something
    String opcode = Serial.readStringUntil('#');
    boolean validOpcode=true;
    //Parse opcode
    if(opcode=="CONNECT"){
      digitalWrite(pinLED, HIGH);
      resetPins();
    }
    else if (opcode=="DISCONNECT"){
      digitalWrite(pinLED, LOW);
      resetPins();
    }
    else if(opcode=="RA0"){
      rightAscension.reset();
    }
    else if(opcode=="RA+"){
      rightAscension.plus();
    }
    else if(opcode=="RA-"){
      rightAscension.minus();
    }
    else if(opcode=="DEC0"){
      declination.reset();
    }
    else if(opcode=="DEC+"){
      declination.plus();
    }
    else if(opcode=="DEC-"){
      declination.minus();
    }
    else{
      validOpcode=false;
    }
    if(validOpcode){
      //Acknowledge valid command
      Serial.println("OK#");
    }
  }
}

void resetPins(){
  rightAscension.reset();
  declination.reset();
}





Moderador: Imagen editada de acuerdo a las normas del foro

0tt0

si quieres te mando el link del proyecto, puede ser útil para otros y además hay una mejora que es la implantación de un modulo bluetooth.

surbyte

Bien, por lo visto solo leiste la parte de como poner un código, Bien!!! pero no posteaste la imagen para que se vea asi que tuve que hacerlo yo. Asi que parece que ambos no leemos bien.

Ironías aparte veamos que ocurre?

primero lo primero, dime como conectas arduino con tu Telescopio.
Describe todo, la interfaz, las conexiones, etc.

Algo ahi no esta bien porque ese código debería funcionar correctamente.

Deberías tmb darnos precisiones, modelo del telescopio, ver la hoja de datos de como se comunica con dispositivos externos etc.

Todo eso nos da el contexto que nosostros no conocemos porque no lo tenemos delante como en tu caso.

Aguardo tus respuestas.


He investigado Arduino-ST4 y encontré este link donde pone tu código

Pero a diferencia de lo que pensaba se trata de una interaz para controlar los movimientos del telescopio.

Asi que tu problema estará entre algun programa en la PC via USB y el Arduino que no esta reconociendo las órdenes, es asi?

0tt0

Si el link ese es de donde saqué todo, la montura (trípode) es una Neq5 con motores AR y DEC y sálida ST-4.
el problema puede estar en que no lo tengo terminado de montar, solo me falta la conexión a la clavija rj12 , que viene camino de china...pero pensaba que a los comandos debería responder. Tendré que esperar a que me llegue para salir de dudas

surbyte

#8
Apr 09, 2018, 04:38 pm Last Edit: Apr 09, 2018, 04:39 pm by surbyte
No.. puedes hacer algo... una leve modificación al código para ver que esta haciendo.
Podrias colocar mas leds para ver los comportamientos en cada caso.

Debo suponer que el led no hace nada?


0tt0

Sólo se queda encendido el led de inicio.

surbyte

#10
Apr 09, 2018, 04:44 pm Last Edit: Apr 09, 2018, 04:48 pm by surbyte
EL problema es que estas usando Serial asi que no podemos ver nada sobre las comunicaciones.
No dispones de un MEGA o DUE supongo?
O tienes otro NANO?

Ya se.. mira esto



La interfaz usa optoacopladores
Pero para probarlo vas a poner diodos LED y resistencias si quieres la misma para ver como se comporta

Coloca un LED del mismo modo que se ve en la figura.. o sea Anodo con 5 y catodo con 2
Y repite con los otros 3.

Pero te recomendaría que uses una R de mayor valor digamos 330 a 470 ohms y desconectes el opto.
Por las cuentas que hago consumer casi 35 mA y estamos al limite.

Asi que desconectas el opto y conectas leds con R nuevas y verás su comportamiento.

0tt0

tengo un one tambien, por cierto lo tengo todo montado en la board

0tt0

Coloca un LED del mismo modo que se ve en la figura.. o sea Anodo con 5 y catodo con 2
Y repite con los otros 3.

No acabo de entender, el anodo al pin 5 y el catodo al pin 2??
y el GND ?

surbyte

Perdona.. no se porque el esquema me hizo pensar que 5 y 4 estaban unidos por un LED pero no es asi
Cada pin con una R de 330 a 470 al LED y a GND.
Pines 5, 4, 3, y 2.

0tt0

Menos mal, ya me estaba echando humo la cabeza  :)
Sólo tengo resistencias de 100 y 10K...
Tendré que pedir las que me dices tú.
El orden de conexión sería pin - anodo- cátodo- R - GND, ¿No?
Estaba pensando en hacer una prueba en el simulador de Arduino, así sabemos si el problema es del programa. ¿ Qué te parece?

Go Up