# Создание Издателя

Рассмотрим пример программы **Издателя**, который публикует из Arduino в топик `chatter` текстовое сообщение "**hello world!**"

<pre class="language-cpp"><code class="lang-cpp">#include &#x3C;ros.h>
#include &#x3C;std_msgs/String.h>

class NewHardware : public ArduinoHardware
{
  public:
  NewHardware():ArduinoHardware(&#x26;Serial1, 115200){};
};
ros::NodeHandle_&#x3C;NewHardware>  nh;

std_msgs::String str_msg;
ros::Publisher chatter("chatter", &#x26;str_msg);

<strong>char hello[13] = "hello world!";
</strong>
void setup()
{
  nh.initNode();
  nh.advertise(chatter);
}

void loop()
{
  str_msg.data = hello;
  chatter.publish( &#x26;str_msg );
  nh.spinOnce();
  delay(1000);
}
</code></pre>

Один из важных частей в примере, это блок в котором мы настраиваем библиотеку для работы через порт `Serial1` и устанавливаем скорость работы `115200`. Если указать неправильный порт или скорость, подключения не будет.

```cpp
class NewHardware : public ArduinoHardware
{
  public:
  NewHardware():ArduinoHardware(&Serial1, 115200){};
};
ros::NodeHandle_<NewHardware>  nh;
```

Загрузим скетч на плату`Arduino`.

После загрузки, зайдем на Raspberry и посмотрим, появился ли созданный топик:

```
rostopic list
```

Также мы можем вывести в терминал сообщение из топика:

```
rostopic echo /chatter
```
